将数据表绑定到datagrid会创建不必要的行

时间:2014-01-16 20:07:10

标签: c# wpf datagrid datatable

我编写了将数据表绑定到数据网格的代码。我用三个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>

我用不同的文件多次测试代码并显示相同的模式。我试图修改代码但没有成功。目前我不知道。对你的帮助表示感谢。谢谢,

1 个答案:

答案 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];

        }