【发布时间】:2018-05-23 17:35:54
【问题描述】:
我必须显示用户选择的表格中的每一行,一切似乎都很好,但是表格被空白行填充,我正在使用 DataGrid 来显示数据。谁能告诉我我在这里做错了什么?
private void showSelectedTable(object sender, RoutedEventArgs e)
{
if (mysql.IsChecked == true)
{
string query = "SELECT * FROM " + tableListBox.SelectedItem.ToString();
MySqlCommand myTableContent = new MySqlCommand(query, (MySqlConnection)conn);
try
{
MySqlDataReader myReader = null;
myReader = myTableContent.ExecuteReader();
choosenDataTable = myReader.GetSchemaTable();
foreach (DataRow row in choosenDataTable.Rows)
{
DataGridTextColumn textColumn = new DataGridTextColumn();
textColumn.Header = row.Field<String>("ColumnName");
tableDataGrid.Columns.Add(textColumn);
}
if (myReader.HasRows)
{
while (myReader.Read())
{
ObservableCollection<String> observable = new ObservableCollection<String>();
for (int i = 1; i < myReader.Columns.Count; i++)
{
observable.Add(myReader.GetString(i));
}
tableDataGrid.Items.Add(observable);
}
}
}
catch(SqlException ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
}
【问题讨论】:
-
WPF应用,还有DataGrid
-
OP,答案似乎是将MySqlDataReader数据复制到DataTable中。没有什么困难的,但是如果你遇到任何障碍,请告诉我。您将向 DataTable 添加列,而不是向 DataGrid 添加列——然后,如果您愿意,可以让 Data 根据 DataTable 自动生成自己的列。