簡體   English   中英

清單 <T> 到數據表返回空-WPF

[英]List<T> to datatable returns empty - WPF

我使用下面的代碼來填充datatable ,從List<double[]> list但數據表不填充。

private void LoadThis(object sender, EventArgs e)
        {
            X model = DataContext as X;

            List<double[]> list = new List<double[]>();
            for (int i = 0; i < model.RowFijtable; i++)
            {
                double[] rowdata = new double[model.ColFijtable];
                for (int j = 0; j < model.ColFijtable; j++)
                {
                    rowdata[j] = model.TauTable[i, j];
                }
                list.Add(rowdata);
            }
            DataTable table = ConvertListToDataTable(list);
            dataGridView1.ItemsSource = table.AsDataView(); //Is this correct?
}

  private DataTable ConvertListToDataTable(List<double[]> list)
    {
        DataTable table = new DataTable();

        // Get max columns.
        int columns = 0;
        foreach (var array in list)
        {
            if (array.Length > columns)
            {
                columns = array.Length;
            }
        }

        // Add columns.
        for (int i = 0; i < columns; i++)
        {
            table.Columns.Add();
        }

        // Add rows.
        foreach (var array in list)
        {
            table.Rows.Add(array);
        }

        return table;
    }

這就是我將信息放置在XAML

<Grid>
    <DataGrid HorizontalAlignment="Stretch"
     VerticalAlignment="Stretch"
     Name="dataGridView1"
     Loaded="LoadThis"
     ItemsSource="{Binding}"
     AutoGenerateColumns="True"/>
</Grid>

我可以看到,即使List具有完整的數據集,列數和行數也已正確傳遞給數據表,但沒有數據值!

我也嘗試做dataGridView1.DataSource = table; 但這使我出錯,因為“ Datagrid不包含DataSource的定義”。

調用table.Rows.Add(array)似乎將整個數組放入第一列值。 要將數組元素放入連續的列中,請嘗試以下操作:

    private DataTable ConvertListToDataTable(List<double[]> list)
    {
        DataTable table = new DataTable();

        // Get max columns.
        int columns = 0;
        foreach (var array in list)
        {
            if (array.Length > columns)
            {
                columns = array.Length;
            }
        }

        // Add columns.
        for (int i = 0; i < columns; i++)
        {
            // Provide default column name & data type
            table.Columns.Add("Column" + (i+1).ToString(), typeof(double) );
        }

        // Add rows.
        foreach (var array in list)
        {
            // assign each array element to the appropriate column
            var row = table.NewRow();
            for (int i = 0; i < array.Length; ++i )
                row.SetField( i, array[i] );
            table.Rows.Add(row);
        }

        return table;
    }        

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM