如何自动更新DataGridViewColumn?
How to auto-update DataGridViewColumn?
我创建了一个 DataGridView
并通过以下代码生成其中一列:
DataTable accessDT = SQL.GetDT(@"select * from [Access]"); //Custom-made method to get the DataTable.
DataGridViewComboBoxColumn dcAccess = new DataGridViewComboBoxColumn();
dcAccess.Name = "Access";
dcAccess.HeaderText = "權限";
dcAccess.DataSource = accessDT;
dcAccess.ValueMember = "ID";
dcAccess.DisplayMember = "Name";
dgvUser.Columns.Add(dcAccess);
它将用 dtAccess
填充“访问”列,这完全没有问题。
但我不知道如何让它在 table [Access] 发生任何变化时自动更新。
我尝试再次获取 DataTable
并执行 Update()
和 Refresh()
,但“访问”列仍然是旧数据。
创建后 dgvUser.Columns["Access"]
下找不到任何 DataSource
。
谁能教教我如何让它正常自动更新吗?
非常感谢!
我想您的 GetDT 方法看起来像这样:
public DataTable GetDT(string sql){
var dt = new DataTable();
using(x as new OleDbDataAdapter(sql, connectionstring))
x.Fill(dt);
return dt;
}
如果没有,它应该 - 数据适配器知道如何创建和打开连接等,所以这 4 行实际上是创建数据表、填充和 return 它所需要的全部内容。
无论如何..修改或添加其他方法,如:
public void FillDT(string sql, DataTable dt){
dt.Clear();
using(x as new OleDbDataAdapter(sql, connectionstring))
x.Fill(dt);
}
然后使用它定期重新填充作为列数据源的 dt:
var dt = (dgvUser.Columns["Access"] as DataGridViewComboBoxColumn).DataSource as DataTable;
FillDT("SELECT...", dt);
我创建了一个 DataGridView
并通过以下代码生成其中一列:
DataTable accessDT = SQL.GetDT(@"select * from [Access]"); //Custom-made method to get the DataTable.
DataGridViewComboBoxColumn dcAccess = new DataGridViewComboBoxColumn();
dcAccess.Name = "Access";
dcAccess.HeaderText = "權限";
dcAccess.DataSource = accessDT;
dcAccess.ValueMember = "ID";
dcAccess.DisplayMember = "Name";
dgvUser.Columns.Add(dcAccess);
它将用 dtAccess
填充“访问”列,这完全没有问题。
但我不知道如何让它在 table [Access] 发生任何变化时自动更新。
我尝试再次获取 DataTable
并执行 Update()
和 Refresh()
,但“访问”列仍然是旧数据。
创建后 dgvUser.Columns["Access"]
下找不到任何 DataSource
。
谁能教教我如何让它正常自动更新吗?
非常感谢!
我想您的 GetDT 方法看起来像这样:
public DataTable GetDT(string sql){
var dt = new DataTable();
using(x as new OleDbDataAdapter(sql, connectionstring))
x.Fill(dt);
return dt;
}
如果没有,它应该 - 数据适配器知道如何创建和打开连接等,所以这 4 行实际上是创建数据表、填充和 return 它所需要的全部内容。
无论如何..修改或添加其他方法,如:
public void FillDT(string sql, DataTable dt){
dt.Clear();
using(x as new OleDbDataAdapter(sql, connectionstring))
x.Fill(dt);
}
然后使用它定期重新填充作为列数据源的 dt:
var dt = (dgvUser.Columns["Access"] as DataGridViewComboBoxColumn).DataSource as DataTable;
FillDT("SELECT...", dt);