繁体   English   中英

C#,DataGridView和DataTable

[英]C#, DataGridView And DataTable

我有一个小问题。 我以前从未使用过DataTable或Datagridview。 成功的话,我会添加一列名称,但是当涉及到添加行时,所有值都会添加到一列中。 这是代码:

StreamReader sr = new StreamReader(filename);
    DataTable table = new DataTable();
    string [] datarow;

    colt = sr.ReadLine();
    string[] columns = colt.Split(';');
    Count = columns.Length;

    foreach (string c in columns)
    {
        Table1.Columns.Add("Column", c);
        table.Columns.Add(c, typeof(String));
    }

    while (!sr.EndOfStream)
    {
        rowt = sr.ReadLine();
        datarow = rowt.Split(';');

        foreach (string a in datarow)
        {         
            table.Rows.Add(a);
            Table1.Rows.Add(a);
        }
    }
}

首先,只看到数据被添加到第一列的原因是DataGridview.Add方法将整个行添加到表中,而不是单个元素。 这就是为什么所有内容都显示在第一列中的原因。 要解决此问题,请像这样传递整个数组:

table.Rows.Add(datarow);

其次,您不应将DataGridView与DataTable分开填充。 这将创建数据的两个副本,并且用户在视图中编辑的任何数据都将与DataTable不同步。 而是填充DataTable,然后将其绑定到DataGridview。 用户所做的任何更改将反映在数据表中。 您的代码如下所示:

using (StreamReader sr = new StreamReader(filename))
{
    string [] datarow;

    colt = sr.ReadLine();
    string[] columns = colt.Split(';');
    Count = columns.Length;

    foreach (string c in columns)
    {
        table.Columns.Add(c, typeof(String));
    }

    while (!sr.EndOfStream)
    {
        rowt = sr.ReadLine();
        datarow = rowt.Split(';');
        table.Rows.Add(datarow);
    }
    Table1.DataSource = table;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM