如何向DataGridView添加项并在输入后自动排序及反转行显示顺序
解决方案
你可以根据自己的使用场景选择以下任意一种实现方式:
方案1:新增行时直接插入顶部(最简单,适合逐行添加的场景)
你当前使用的Rows.Add()是将新行追加到表格末尾,要反转最终显示顺序,只需要修改行添加逻辑,把新行插到表格最顶部即可,后续单元格赋值、样式设置的代码完全不用调整:
// 把原来的 int rowID = dgTrackIDStatus.Rows.Add(); 替换为以下两行 int rowID = 0; dgTrackIDStatus.Rows.Insert(rowID, 1);
所有行添加完成后,显示顺序就是你原有添加顺序的反转。
方案2:批量添加完成后一次性反转(适合批量导入数据后调整顺序的场景)
如果是一次性批量加完所有行之后才需要反转,直接操作行集合即可,不会修改原有行的内容和样式:
// 提取所有现有行 var rows = dgTrackIDStatus.Rows.Cast<DataGridViewRow>().ToArray(); // 清空原有行 dgTrackIDStatus.Rows.Clear(); // 反向插入行 dgTrackIDStatus.Rows.AddRange(rows.Reverse().ToArray());
方案3:数据源排序(适合绑定了DataSource的生产环境场景)
如果你的DataGridView是绑定了DataTable、List等数据源的,更推荐通过数据源排序实现,后续调整排序规则更灵活:
- 给数据源新增一个自增序号字段(比如
AddSeq),每添加一条数据序号+1 - 所有数据添加完成后指定排序规则即可:
dgTrackIDStatus.Sort(dgTrackIDStatus.Columns["AddSeq"], System.ComponentModel.ListSortDirection.Descending);
注意:如果控件已绑定数据源,不要直接操作Rows集合调整顺序,会抛出异常,优先用该方案。
内容的提问来源于stack exchange,提问作者Miguel V
相关产品推荐
相关产品推荐

