[英]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.