【发布时间】:2014-10-21 23:31:09
【问题描述】:
可以通过单击ColumnHeaderCell 之一来对DataGridView 进行排序。但我希望包含每一行索引的一列保持固定。
我的意思是,当我单击另一个列标题时,网格行应该按该列的内容进行排序,除了包含行索引的第一列。
对不起!我无法发布图片!
【问题讨论】:
标签: c# datagridview columnsorting
可以通过单击ColumnHeaderCell 之一来对DataGridView 进行排序。但我希望包含每一行索引的一列保持固定。
我的意思是,当我单击另一个列标题时,网格行应该按该列的内容进行排序,除了包含行索引的第一列。
对不起!我无法发布图片!
【问题讨论】:
标签: c# datagridview columnsorting
如果您的意思是要打破行:不,如果不完全重新创建它们,您就无法做到这一点。行是一个带有列的单元,它们只能作为一个单元移动。
但是,如果您希望一列始终包含可见的行号,您只需在每次排序后重新填充该列:
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;
并确保在填充数据后执行此操作。
【讨论】: