首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何自动更新DataGridViewColumn?

如何自动更新DataGridViewColumn?
EN

Stack Overflow用户
提问于 2020-12-24 18:40:10
回答 1查看 33关注 0票数 0

我创建了一个DataGridView,并通过以下代码生成其中一列:

代码语言:javascript
复制
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

有没有人能好心教我怎么让它自动更新?

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-24 20:56:07

我假设您的GetDT方法如下所示:

代码语言:javascript
复制
public DataTable GetDT(string sql){
  var dt = new DataTable();
  using(x as new OleDbDataAdapter(sql, connectionstring))
    x.Fill(dt);
  return dt;
}

如果没有,它应该- dataadapters知道如何创建和打开连接等,所以这4行代码就是您创建datatable、填充和返回它所需的全部内容。

不管怎样..。修改或添加其他方法,如下所示:

代码语言:javascript
复制
public void FillDT(string sql, DataTable dt){
  dt.Clear();
  using(x as new OleDbDataAdapter(sql, connectionstring))
    x.Fill(dt);
}

然后使用它定期重新填充作为列的数据源的dt:

代码语言:javascript
复制
var dt = (dgvUser.Columns["Access"] as DataGridViewComboBoxColumn).DataSource as DataTable;

FillDT("SELECT...", dt);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65437165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档