不是对datagridview中的所有列进行排序

本文关键字:排序 datagridview | 更新日期: 2023-09-27 18:19:38

可以通过单击其中一个ColumnHeaderCellDataGridView进行排序。但我希望一列,包含每行的索引,保持固定。

我的意思是,当我点击另一个列标题时,网格行应该根据该列的内容进行排序,除了包含行索引的第一列之外。

对不起!我不能发布图片!

不是对datagridview中的所有列进行排序

如果您的意思是要中断行:不,如果不完全重新创建它们,就无法做到这一点。行是一个有列的单元,它们只能作为一个单元移动。

然而,如果你想让一列总是包含可见的行号,你只需要在每次排序后重新填充该列:

private void dataGridView1_Sorted(object sender, EventArgs e)
{
   dataGridView1.SuspendLayout();
   int yourindex = 0; // whichever column your index is at
   foreach (DataGridViewRow row in dataGridView1.Rows) 
                            row.Cells[yourindex].Value = row.Index;
   dataGridView1.ResumeLayout();
}

注意:这样做将失去重新创建原始排序顺序的能力。这可能不是问题。如果是的话,你需要包括一个额外的列,叫做"key"或"old order"或其他什么。

试试这个

Int32 columnIndex = 1;// Index of the column you want as to be not sortable
DataGridView.Columns[columnIndex].SortMode = DataGridViewColumnSortMode.NotSortable;

并确保在填充数据后执行此操作。