• 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的值了,在你还有其他的控件也绑定了这个数据源的时候,你在改变当前值的时候其他的控件也会随着改变,这个方法也是适用于编辑,添加等一系列方法。

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

    作者:不老神仙
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    数组的操作方法
    数组遍历的方法以及区别
    组件内的守卫
    路由守卫
    软件工程
    java web (j2ee)学习路线 —— 将青春交给命运
    团队作业(一)- 第五组
    软件工程
    软件工程-第二次作业
    java局部/成员/静态/实例变量
  • 原文地址:https://www.cnblogs.com/allanbolt/p/1648735.html
Copyright © 2020-2023  润新知