我创建了一个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填充"Access“列,这完全没有问题。
但是我不知道如何让它在表访问发生任何变化时自动更新。
我再次尝试获取DataTable并执行Update()和Refresh(),但"Access“列仍然是旧数据。
而且在创建dgvUser.Columns["Access"]之后,我在它下面找不到任何DataSource。
有没有人能好心教我怎么让它自动更新?
非常感谢!
发布于 2020-12-24 20:56:07
我假设您的GetDT方法如下所示:
public DataTable GetDT(string sql){
var dt = new DataTable();
using(x as new OleDbDataAdapter(sql, connectionstring))
x.Fill(dt);
return dt;
}如果没有,它应该- dataadapters知道如何创建和打开连接等,所以这4行代码就是您创建datatable、填充和返回它所需的全部内容。
不管怎样..。修改或添加其他方法,如下所示:
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);https://stackoverflow.com/questions/65437165
复制相似问题