You need to enable JavaScript to run this app. 未绑定DataTable的DataGridView排序时固定首列显示行号如何实现
优惠活动
大模型
产品
解决方案
定价
更多

未绑定DataTable的DataGridView排序时固定首列显示行号如何实现

实现方案

核心思路

利用DataGridView自带的Sorted事件,在每次非首列排序完成后直接重写首列的行序号即可,不需要修改原有排序逻辑,也不需要绑定数据源,是最轻量化的实现方案。

具体操作步骤

  • 首先配置首列属性:将首列的SortMode属性设置为DataGridViewColumnSortMode.NotSortable,禁止用户点击首列表头触发排序
  • 其余需要支持排序的列,保持SortMode为默认的Automatic即可
  • 给DataGridView绑定Sorted事件,事件处理逻辑如下:
private void dataGridView1_Sorted(object sender, EventArgs e)
{
    // 遍历所有行,重写首列的行序号
    for (int i = 0; i < dataGridView1.Rows.Count; i++)
    {
        // 首列索引为0,如果首列设置了名称也可以用Columns["自定义列名"]的方式取值
        dataGridView1.Rows[i].Cells[0].Value = i + 1;
    }
}
  • 程序启动插入完所有初始数据后,主动执行一次上述逻辑给首列赋初始值即可。

方案优势

  • 完全适配你的使用场景:无需绑定DataTable,不用修改原有数据插入逻辑,仅需要新增一个事件处理即可
  • 性能开销极低:由于你的数据是固定不变的,排序后重刷序号的操作只会在用户点击表头时触发一次,不会产生多余性能消耗
  • 逻辑简单易维护,无额外依赖

内容的提问来源于stack exchange,提问作者André

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 09:12:00