DataTable/DataGridView 行号显示

DataTable/DataGridView Row Number Display

我想在我的 DataGridView 的第一个专栏中显示,但没有找到好的解决方案。我尝试向 DGV 添加一个新列,但它崩溃了..

List<string[]> rows =  File.ReadAllLines(Open_CSV.FileName, 
                       Encoding.ASCII).Select(x => x.Split(';')).ToList();

DataTable dt = new DataTable();
foreach (string s in rows[0])
{
    dt.Columns.Add(s);
}
rows.RemoveAt(0);
rows.ForEach(x =>
{
    dt.Rows.Add(x);
});

DGV_DATA.DataSource = dt;

你有什么解决方案,最好的地方是添加 DataTableDataGridView 吗?

不确定它是否非常有效,但这可以解决问题

List<string[]> rows =  File.ReadAllLines(......)
                         .Select((x,i) => 
                         string.Join(";", (i+1).ToString(), x)
                         .Split(';')).ToList();

您可以使用 Select 的版本,它使用序列中当前项目的索引器,并将该索引添加到将被拆分的字符串中。
我担心的是这样一个事实,即您以这种方式构建了一个额外的字符串,但是您不需要更改以下代码中的任何内容。

使用 DataSource 时,手动添加数据可能会出现问题,如您所见。在DataSource中加上一个row-number显然不是一个好主意,只要数字不属于数据即可。在这种情况下,一种想法是在 row-header 中显示数字,如 here.

所述

在您自己构建数据源的情况下,您可能会考虑离开使用 DataSource-Property 的路径并开始直接添加行。 DataGridViewRows-属性可以用来手动添加行。您只需要构建类似于 DataGridViewRow-objects 的列表,您可以将其传递给 AddRange 方法。对于这些 DataGridViewRows,您可以添加附加列。并确保将该附加列也添加到 DataGridView.

Columns-Collection