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

时间:2014-08-28 07:29:43

标签: c# datagridview columnsorting

可以通过点击其DataGridView之一对ColumnHeaderCell进行排序。但是我想要一个包含每行索引的列保持固定。

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

抱歉!我无法发布图片!

2 个答案:

答案 0 :(得分:1)

试试这个

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

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

答案 1 :(得分:1)

如果您的意思是打破行:如果不完全重新创建它们,就不能这样做。行是一个带有列的单元,它们只能作为一个单元移动。

但是,如果您希望一列始终包含可见行号,则只需在每次排序后重新填充该列:

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();

}

注意:通过这样做,您将无法重新创建原始排序顺序。这可能不是问题。如果是,您需要包含一个名为“密钥”或“旧订单”的额外列或其他任何内容。