datagridview 列排序_datagridview控件用法

datagridview 列排序_datagridview控件用法datagridview的列标题排序这个很容易实现,不过有时候如果遇到想按数字进行排序时,会发现系统是按字符串顺序进行排序,而不是按数字排序的。我的解决方法,是将要排序的列复制一列,然后将它隐藏起来,你列头进行排序时,实际上是按这个隐藏的列排序,并且将这个隐藏的列的值

datagridview的列标题排序这个很容易实现,不过有时候如果遇到想按数字进行排序时,会发现系统是按字符串顺序进行排序,而不是按数字排序的。

我的解决方法,是将要排序的列复制一列,然后将它隐藏起来,你列头进行排序时,实际上是按这个隐藏的列排序,并且将这个隐藏的列的值转成double型,这样就不影响原来的列的值的显示了。代码如下

int sortOrder = 0; private void mygv_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) { if (RunningFUC) { return; } //这里我是加了个bool,防止还没排序结束,就再按一次,数据显示混乱 RunningFUC = true; int theindex = e.ColumnIndex; if (theindex == 0) { return; } switch (theindex) //各个列时 { case 5: Soting("总分"); //按“总分"这列来排序,下面是一样的 break; case 6: Soting("得分"); break; case 7: Soting("单选"); break; case 8: Soting("判断"); break; case 9: Soting("操作"); break; default: if (sortOrder == 0) { mygv.Sort(mygv.Columns[e.ColumnIndex], ListSortDirection.Descending); sortOrder++; } else { mygv.Sort(mygv.Columns[e.ColumnIndex], ListSortDirection.Ascending); sortOrder--; } break; } //我这里是有一个checkbox列,排序时取消它们的选中状态 for (int i = 0; i < dtrowcount; i++) { ((DataGridViewCheckBoxCell)mygv.Rows[i].Cells[0]).Value = false; } RunningFUC = false; } void Soting(string columnname) { string copycolumnname = columnname + "copy"; //隐藏的复制列的名称 for (int x = 0; x < dtrowcount; x++) { DataGridViewRow dr = mygv.Rows[x]; DataGridViewCell dc = dr.Cells[columnname]; DataGridViewCell dccopy = dr.Cells[copycolumnname]; string thevalue = dc.Value.ToString().Trim(); if (thevalue.Length != 0) { dccopy.Value = Convert.ToDouble(thevalue);//转成double型 } else { dccopy.Value = -1; } } if (sortOrder == 0) { ClientDT.DefaultView.Sort = copycolumnname + " desc"; //mygv.Sort(mygv.Columns[e.ColumnIndex], ListSortDirection.Descending); sortOrder++; } else { ClientDT.DefaultView.Sort = copycolumnname + " asc"; //mygv.Sort(mygv.Columns[e.ColumnIndex], ListSortDirection.Ascending); sortOrder--; } mygv.Columns[copycolumnname].HeaderCell.SortGlyphDirection = System.Windows.Forms.SortOrder.None; }

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/16243.html

(0)
上一篇 2024年 9月 18日
下一篇 2024年 9月 18日

相关推荐

关注微信