zoukankan      html  css  js  c++  java
  • BindingSource的Position等于DataGridView的选中行方法

      以前没有用过微软自带DataGridView,都是用的Developer Express .NET v8.2第三方控件,那个好用啊,真的是很怀念哪些日子,毕竟它是收费的东西,废话不多说了,谈谈我实现的方法吧:

      在你的Form_Load方法中,填写如下代码:

    //设置DataGridView选择模式
    gvHistory.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

     BindingSource bs = new BindingSource();
    DataGridView dgv
    =new DataGridView ();
    dgv.DataSource
    = bs;

      在你的CellMouseClick和RowHeaderMouseDoubleClick事件中添加如下代码,;这个地方就是你要注意的地方了,设置BindingSource.Position关键就是你的BindingSource的数据源的形式是什么样的,我测试了两种格式,DataTable和BindingList<>,这两种的设置方式有所不同,分别对应BindingSource的Find和Indexof两个方法:

      BindingList形式:

    代码
    //返回的是BindingList<Car>的集合
    bs.DataSource = DoorBll.GetBindingList(ID);
    Car C = (Car)gvHistory.Rows[e.RowIndex].DataBoundItem;
    //推荐使用此种方式
    int a = bs.IndexOf(gvHistory.Rows[e.RowIndex].DataBoundItem);
    //这种方式实际上调用的是BindingList的IndexOf()方法
    // int b = bs.IndexOf(C); 
    bs.Position
    = a;
    Car C2
    =(Car) bs.Current;
     

      DataTable形式:

    代码
     //返回的是DataTable的集合
    bs.DataSource = DoorBll.GetDataTable(ID);
    Car C = (Car)gvHistory.Rows[e.RowIndex].DataBoundItem;
    int a = bs.Find("ID",C.ID);
    bs.Position = a;
    Car C2
    =(Car) bs.Current;

      这样你就可以改变BindingSource.Position的值了,在你还有其他的控件也绑定了这个数据源的时候,你在改变当前值的时候其他的控件也会随着改变,这个方法也是适用于编辑,添加等一系列方法。

      这里只是抛砖引玉,希望对大家有所帮助!

    作者:不老神仙
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    我的算法日志:数据结构之顺序队列与循环队列
    我的算法日志:排序算法之快速排序
    算法:冒泡排序
    算法:桶排序(简易版)
    Android:配置LitePal 3.0
    Android:简单粗暴的二维码生成与扫描
    Linux
    Python
    Linux
    Python
  • 原文地址:https://www.cnblogs.com/allanbolt/p/1648735.html
Copyright © 2011-2022 走看看