日期:2014-05-18  浏览次数:21119 次

datagridView和comboBox刷新数据源问题
在项目中有一个名为UserEdit的form,其中有datagridView1、comboBox1、和button_fresh三个控件;当该form载入的时候,绑定datagridView1的数据源和comboBox1的数据源,代码如下:
   
  private void UserEdit_Load(object sender, EventArgs e)
  {
  panel1.Hide();
  string sql = "select ID 工号,passwd 密码,name 姓名,phone 联系电话,role 系统角色 from users ";
  sqlBase s = new sqlBase();
  DataTable t = new DataTable();
  t = s.ExeSQLdt(sql);

  dataGridView1.DataSource = t;//绑定datagridView1数据源
   
  comboBox1.DataSource = t;//绑定comboBox1数据源
  comboBox1.DisplayMember="name";

  }

当数据库中的users表发生改变,如果不关闭UserEdit这个form,datagridView1显示的内容以及comboBox1的下拉选项就不会发生变化。现在要求在不关闭UserEdit这个form的情况下,点击button_fresh这个按钮,实现刷新的效果,即点击了button_fresh这个按钮后,相当于把UserEdit这个form重新载入一次。

求解决方法!!

另外,有哪位大侠有更好的实时刷新的方式,望不吝赐教,非常感激!!

------解决方案--------------------
using system.data

class AccData
{

public Dataset GetMsg()
{
DBHelp db=new DBHelp();
string sql = "select ID 工号,passwd 密码,name 姓名,phone 联系电话,role 系统角色 from users ";
dataApanreader(忘记) da=new dataApandreader(sql,DB.Conn);
DataSet ds=new DataSet();
da.fill(ds,"表名");
return ds;
}
}

DataSet ds;
DataView dv;
AccData ad=new AccData();
 private void UserEdit_Load(object sender, EventArgs e)
{
ds=ad.GetMsg();
dv=ds.table[0].defaultView;
}

private void button_fresh_Clik(object sender, EventArgs e)
{
ds=ad.GetMsg();
dv=ds.table[0].defaultView;


做个方法 查出虚拟表 填充给数据集DataSet 然后返回他。
把这张表给DataView作为缺省视图。 
然后在buttion的触发事件里 再执行下这个代码

- - 貌似又是你
------解决方案--------------------
探讨

有具体方法么,请指教,谢谢引用:
我感觉你这个button不是在这个窗体中吧,也没必要放在这里面啊

------解决方案--------------------
把UserEdit_Load中的代码放在refresh()中
然后双击button
放入代码:
dataGridView1.DataSource=null;
comboBox1.Items.Clear();
refresh();