2024年4月21日发(作者:)
WinForm DataGridView 停止排序功能.
为什么需要停止排序? 我遇到如下情况,DataGridView加载数据后,用户点击了列标题排序,这时如
果用户想增加一个新行或者修改了排序列中的某个值,DataGridView会自动排序,影响用户编辑,编辑行
的位置变来变去,很不友好。 那么,能不能暂停DataGridView的排序功能呢? 网上搜索了很多资料,并没
有直接的方法解决。 DataGridView 一旦设置了排序就没有直接的方法去停止排序了。 即使把所有列的
SortMode重新设置成NotSortable也是不行的。
以下提供变通方法:
方案一: 以下例子中urce为DataTable。
一、 为datatable增加一个int类型的列,名字为FInnerSort,此列不与数据库中的列关联,只用于
DataGridView排序用. 此列可以用代码加上去,如:("FInnerSort",
GetType(32))
也可以直接在SQL语句中加, select ColA,ColB,0 as FInnerSort FROM …
如果是使用VS的DataSet编辑器,可以手工增加一个列,source空白(这样就不与数据库关联)设置如
图:
二、 设计好DataGridView中列与datatable中的列一一对应。其中与FInnerSort对应的列要隐藏起
来,这个列用于排序
三、FormLoad 事件中写
em = fillData() ‘这里省略赋值语句
nerateColumns = False '不自动生成列
urce = em
For Each col As DataGridViewColumn In s
If de = tic Then
de = mmatic '设置列只能通


发布评论