当前位置:编程学习 > C#/ASP.NET >>

C# winform DataGridView有空白行时点击列标题排序问题

DataGridView能显示10行,但是数据有可能没有10条,就在后面填了空行,让它填满整个DataGridView。如下所示:

...
//得到DataSet
...

//补充空行,填满整个DataGridView
while (dataset.Tables[0].Rows.Count < 10)
    dataset.Tables[0].Rows.Add();

//数据源
DataGridView1.DataSource = dataset.Tables[0];

但是有一个问题,就是点击列标题时,会自动排序,就把填加的空行给排到前面了,怎么才能让排序时不排空行,就是空行一直在最后几行?谢谢了。 --------------------编程问答-------------------- 在DataGridView.SortCompare 事件处理
private void dataGridView1_SortCompare(object sender,
    DataGridViewSortCompareEventArgs e)
{
    
    if (dataGridView1.Rows[e.RowIndex2] 是空行)
    {
        e.SortResult = 1;
    }
    e.Handled = true;
}


  
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 

http://feiyun0112.cnblogs.com/ --------------------编程问答--------------------
引用 1 楼 feiyun0112 的回复:
在DataGridView.SortCompare 事件处理
private void dataGridView1_SortCompare(object sender,
DataGridViewSortCompareEventArgs e)
{

if (dataGridView1.Rows[e.RowIndex2] 是空行)
{
e.SortResult = 1;
}
e.Handled = true;
}


试过了,没用,我看了下MSDN,对于这个函数:
只有当未设置 DataSource 属性,并且 VirtualMode 属性值为 false 时,此事件才会发生。 --------------------编程问答-------------------- 那你就不设置 DataSource 属性,并且 VirtualMode 属性值为 false ,手工填数据 --------------------编程问答-------------------- 设置datagirdview的列的属性
datagirdview1.Columns[0].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
其他列同样设置,可以在设置datagirdview格式的时候设置,也可以向上面那样写代码设置 --------------------编程问答--------------------
引用 4 楼 xxyping 的回复:
设置datagirdview的列的属性
datagirdview1.Columns[0].SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
其他列同样设置,可以在设置datagirdview格式的时候设置,也可以向上面那样写代码设置


这样就不能排序了。。 --------------------编程问答--------------------
引用 3 楼 feiyun0112 的回复:
那你就不设置 DataSource 属性,并且 VirtualMode 属性值为 false ,手工填数据

就是要绑定数据源,手工填数据的话还不如直接用ListView了,就没有空行的问题了
不过这也算是个办法,还有没有更好的办法了? --------------------编程问答-------------------- SortCompare事件里把空行删除,完事了再加上呗!! --------------------编程问答--------------------
引用 7 楼 zzhwxt159 的回复:
SortCompare事件里把空行删除,完事了再加上呗!!

SortCompare事件:
只有当未设置 DataSource 属性,并且 VirtualMode 属性值为 false 时,此事件才会发生。 --------------------编程问答--------------------
引用 8 楼 kxfzly 的回复:
引用 7 楼 zzhwxt159 的回复:
SortCompare事件里把空行删除,完事了再加上呗!! 


SortCompare事件: 
只有当未设置 DataSource 属性,并且 VirtualMode 属性值为 false 时,此事件才会发生。

单击标题列时的事件就处理:

          private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        { 
           //

        }
--------------------编程问答--------------------
引用 9 楼 yhb417 的回复:
单击标题列时的事件就处理:

private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
//

}


单击标题列时删除空行,排完序再添加空行,这样也行。
排完序是哪个事件? --------------------编程问答-------------------- 前边的都没用,就最后那哥们的偶用!
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,