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