您现在的位置: 爱51代码网 >> 范文 >> 文章正文
DataGridView绑定IList<T>实时更新问题

DataGridView绑定IList<T>实时更新问题

在DataGridView绑定到DataTable时,若表中的行发生了变更(查询)时,grid中的数据会实时变更。在初始化窗口时只需要绑定一次即可。
但当DataGridView绑定到IList时,当数据源发生了变更,则grid中的数据未变更,还是上次的数据,无法达到实时更新。
--以上相信使用过的都知道这个问题。
求最好方案,以下是想到的方法,但无法达到预期效果:
1.每次查询及变更数据后,再绑定一次(费时,耗性能)
2.使用BindingSource绑定,与直接绑定差不到,也是要每次查询后再绑定才可以更新。
3.使用Bindinglist<T>进行数据转换工作,但只支持泛型转换,且当数据发生变更时,依然无法进行更新。
还是得再绑定,每次要都转换.
4.若将list 定义为IList<Customer> customerlist = new BindingList<Customer>();似乎也达不到预期效果

求最好方案:
1.能否像DataTable那样达到实时更新。
  DataTable达到实时更新的机制是什么,为何list不能呢?是因为datatable中有些事件处理的机制吗?
2.能否重写一个List,以达到实时更新的效果,该从何处下手,需继承某个类或接口吗?


C# code?public IList<Customer> list = new List<Customer>();           public TestForm()         {             InitializeComponent();             BindGrid();         }           public void BindGrid()         {             //将list绑定到datagridview中             dataGridView1.DataSource = list;         }         /// <summary>         /// 查询按钮,每次查询时会从Textbox1中获取ID号,从数据库查询出         /// </summary>         /// <param name="sender"></param>         /// <param name="e"></param>         private void Btn_Click(object sender, EventArgs e)         {             //问题:当查询条件变更后返回的LIST中的对象变更后,则datagridview中的数据未发生变更               list = GetCustomerList(TextBox1.text);              // dataGridView1.DataSource = list;每次绑定觉得太费性能,若有10000数据绑定时,应该还是耗点性能吧。         }           /// <summary>         /// 获取返回LIST         /// </summary>         /// <param name="ID"></param>         /// <returns></returns>         private IList<Customer> GetCustomerList(string ID)         {             return DBHelper.GetID(ID);         }
需要重新绑定

BindingSource是winform下微软提供的专用于实时更新显示的控件

如果是BindingSource.Source中发生的变化,肯定能够实时刷新
但如果跟这个没有关系了,按你描述,你似乎是想要跟数据库实时交互,这肯定不可能滴

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    android手机无法与eclipse或电脑
    C/C++洗牌算法源代码
    servlet技术实现用户名唯一的验证
    E-business suite system servic
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    asp中有一段javascipt的网页鼠标
    sharepoint 2010 获取用户信息Us
    设计包含max函数的队列
    随机从数组中取出指定的不重复的
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    sharepoint 2010 获取用户信息Us
    mysql主从同步延迟方案解决的学习
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    恢复使用繁体字可行性研究报告
    vb.net关于control.tag的问题
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |