DataTable / DataGridView行号显示

时间:2015-03-18 13:20:18

标签: c# winforms datagridview datatable

我想在我的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中最佳位置添加?

2 个答案:

答案 0 :(得分:1)

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

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

您可以使用序列中使用当前项目的索引器的Select版本,并将该索引添加到将要拆分的字符串中。 我担心的是这样一来,你可以通过这种方式构建一个额外的字符串,但是你不需要在下面的代码中做任何改变。

答案 1 :(得分:1)

使用DataSource时,手动添加数据可能会导致问题,正如您所经历的那样。只要数字不属于数据,向DataSource添加行号显然不是一个好主意。在这种情况下,一个想法是在行标题中显示数字,如here所述。

在您自己构建DataSource的情况下,您可能会想到离开使用DataSource-Property的路径并开始直接添加行。 Rows - DataGridView的属性可用于手动添加行。您只需要构建类似于DataGridViewRow - 列表的对象,您可以将其传递给AddRange - 方法。对于这些DataGridViewRows,您可以添加其他列。并确保将该附加列添加到Columns - DataGridView的集合中。