我编写了将数据表绑定到数据网格的代码。我用三个txt文件中读取的三个双数组测试了代码。第一个数组包含1 2 3,标记为“test1”。具有4 5 6 7和test2的第二阵列。第三个有test 9的8 9。当我测试时,数据在数据网格上填充了额外的行,如下所示。
test1 test2 test3
1 0 0
2 0 0
3 0 0
0 4 0
0 5 0
0 6 0
0 7 0
0 0 8
0 0 9
我的目的是展示数据
test1 test2 test3
1 4 8
2 5 9
3 6
7
以下是代码:
string[] filenames;
DataTable tvsa = new DataTable();
for (int i = 0; i < filenames.Length; i++)
{
double[] a_raw = arsconv.Ama;
// Define the columns of the table.
DataColumn column= new DataColumn();
column.DataType = System.Type.GetType("System.Double");
column.ColumnName = filenames[i];
tvsa.Columns.Add(column);
//Define rows
DataRow dr;
for (int l = 0; l < a_raw.Length; l++)
{
dr = tvsa.NewRow();
dr[filenames[i]] = a_raw[l];
tvsa.Rows.Add(dr);
}
}
datagrid_accu.ItemsSource = tvsa.DefaultView;
XAML:
<DataGrid Name="datagrid_accu" ItemsSource="{Binding tvsa.DefaultView}" Width="Auto" MaxWidth="500" AutoGenerateColumns="True" >
<DataGrid.Columns>
</DataGrid.Columns>
</DataGrid>
我用不同的文件多次测试代码并显示相同的模式。我试图修改代码但没有成功。目前我不知道。对你的帮助表示感谢。谢谢,
答案 0 :(得分:2)
更改此部分:
//Define rows
DataRow dr;
for (int l = 0; l < a_raw.Length; l++)
{
dr = tvsa.NewRow();
dr[filenames[i]] = a_raw[l];
tvsa.Rows.Add(dr);
}
对此:
//Define rows
DataRow dr;
for (int l = 0; l < a_raw.Length; l++)
{
if ( tvsa.Rows.Count > l )
{
dr = tvsa.Rows[l];
}
else{
dr = tvsa.NewRow();
tvsa.Rows.Add(dr);
}
dr[filenames[i]] = a_raw[l];
}