我有一个桌面应用程序,我在表单上使用DataGridView。我冻结了第一排。但是当我在DataGridView中单击列的标题时,第一行的位置也在变化。当我排序时,如何忽略第一行。
答案 0 :(得分:0)
基本上,你要问的是能够只对DataGridView
的一部分进行排序。据我所知,没有简单或标准的方法可以做到这一点,菲利普对这个问题的回答也是如此:Sorting selected rows in DataGridView。这并不意味着无法实现您想要的行为。
Filip提供了一个实现,在这个question中,Justin提供了您需要稍微修改的代码,但这可能符合您的需求。这个问题询问如何在DataGridView
中向上或向下移动一行,但我认为您可以修改他的实现,以便在排序后将要保持静态的行一直移动到顶部。根据您要排序的行数,第一行可能会消失并重新出现。但是,如果您的数据集相对较小,我无法想象第一行的短暂闪存被分类到某个随机位置然后再添加到顶部会导致任何重大问题。
答案 1 :(得分:0)
在SortCompare
的{{1}}事件的SortCompare
事件处理程序中,试试这个:
DataGridView
答案 2 :(得分:0)
private void dataGridView1_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
{
int so = 1;
if (dataGridView1.SortOrder == SortOrder.Ascending)
{
so = -1;
}
if (e.RowIndex1 == 0 )
{
e.SortResult = so;
e.Handled = true;
}
if (e.RowIndex2 == 0)
{
e.SortResult = -so;
e.Handled = true;
}
}
此代码通过相应地设置第一行的排序结果,将第一行始终置于排序列表的顶部。