我创建了一个函数来填充MySQL数据库中的数据表,然后使用此函数设置按预期工作的DataGrid的源。我的问题是这个特定的表只有两个字段,因此留下了很多空间,我的研究表明,我必须将各个列宽设置为“*”,意思是自动,但是因为数据网格只在编译时填充,所以我不能访问这些列,或者我可以吗?C#WPF在不知道列的情况下将数据网格列的大小设置为自动
我很努力地找到一种方法来编辑这些列,因为它们在编译时不存在,例如我也想更改这些列的“标题”。
这是我的代码,因为它代表;
函数从查询
// Function to load Query Data into a Data Table
public DataTable LoadIntoDataTable(string SQLQuery)
{
// Create a Data Table
DataTable dataTable = new DataTable();
// Check Connection
if (this.OpenConnection() == true)
{
try
{
// Initialise my data adapter with a query
MySqlDataAdapter dataSource = new MySqlDataAdapter(SQLQuery, Connection);
// Fill the Data Table based on the query
dataSource.Fill(dataTable);
// Close Connection
this.CloseConnection();
// Return Data
return dataTable;
}
catch (MySqlException ex)
{
switch (ex.Number)
{
default:
{
MessageBox.Show("Error: " + ex.Number, "Error");
break;
}
}
}
}
return dataTable;
}
功能填充数据表来填充数据网格与信息
public void FillDataGrid()
{
// Create a Data Table and fill it with Information from Title Table
DataTable MyData = myDatabase.LoadIntoDataTable("SELECT * FROM titles");
// Assign Data Table to the Data Grids Source
dg_TitlesView.ItemsSource = MyData.DefaultView;
// Count Table Rows and Change Relevant Label to Reflect this number
lbl_TitleCount.Content = myDatabase.CountTableRecords("titles");
}
感谢。
谢谢,我真的希望这会工作,因为它看起来很理想,并避免XAML。我发现保持C#中的大部分工作增加了重用性。我试过你的代码 - 没有错误,但没有改变? – Torrm 2014-12-01 21:54:34
@mbarrot:对不起,将错误的代码复制进去了。我编辑了答案并验证了它现在可以正常工作。 – 2014-12-01 22:02:56
@Blam:我不认为这是一个好主意。如果您没有静态列名称,您将如何针对网格列单元格执行其他任务?例如,标题可以很容易地更新为区域或客户特定的术语。然后,更改数据表中列的名称将需要对列的动态引用(将ID映射到标题文本)通过代码的其余部分,这会使实现变得笨重和易碎。 – 2014-12-01 22:07:36