zoukankan      html  css  js  c++  java
  • DataGridView中的Combobox的应用

     在WinForm中DataGridView可谓是应用比较多的数据显示控件了,DataGridView中可以应用各种控件,关于这样的文章网上

    已有很多。都是实例化一个控件然后通过DataGridView.Controls.Add()方法绑定控件。然后通过特定的事伯执行数据绑定与操作。

        这几天在做项目的时候也也用到的DataGridView控件,而且需要要DataGridView使用ComboBox来动态的显示数据。查了不少

    的资料来完成DataGridView中的ComboBox的数据绑定,多数都是通过严设置在WinForm中的窗体InitializeComponent()中来设

    置ComboBox对象的DataSource、DisplayMember、ValueMember的值来实现数据绑定,可是这样并不能实现每行不同的数据进

    行绑定。在查看MSDN的时候我发现一个对象是DataGridViewComboBoxCell 。MSDN上这样说的:

    DataGridViewComboBoxCell 类是用于显示组合框控件(即组合了列表选择字段的编辑字段)的 DataGridViewCell 的专用类型。

    当前选定的 DataGridViewComboBoxCell 承载一个 DataGridViewComboBoxEditingControl,用户可在其中更改单元格的值

    (假设单元格的 ReadOnly 属性设置为 false)。 与 ComboBox 控件不同,DataGridViewComboBoxCell 没有 SelectedIndex

    和 SelectedValue 属性,而是通过从下拉列表中选择值来设置单元格的 Value 属性。

    所以我这样实现的:

    在DataGridView进行数据绑定时通过for来循环添加行(通过DataSource来实现的时候下的的功能无法完成),同时

    DataGridViewComboBoxColumn列中填充Null。 然后在DataGridView的RowsAdded事件中添加ComboBox的数据绑定代码。

    复制代码
    1       private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
    2        {
    3            
    4            DataGridViewComboBoxCell DgvCell = this.dataGridView1.Rows[e.RowIndex].Cells[1] as DataGridViewComboBoxCell;
    5            DgvCell.DataSource = DataSource;
    6            DgvCell.DisplayMember = "MeasureName";
    7            DgvCell.ValueMember = "MeasureId";
    8         }
    复制代码

    这样就可以完成数据绑定了。我们就可以在DataGridVie一行的后面添加一个按钮列,然后选择DataGridView的CellClick事件中编写代码。

    我们可以通过

        

    string selectValue =(string)(this.dataGridView1.Rows[e.RowIndex].Cells[1] as DataGridViewComboBoxCell).Value;//取得所选值的key即绑定ValueMember的值。
    MessageBox.Show("" + selectValue.ToString() + "");

           注意的地方就是如果绑定的的是泛型集合,那么DisplayMember与ValueMember的值必须是属性(property)

    不可以是类的字段(Filed)。

  • 相关阅读:
    session中删除数组中的某一个值
    Windows 查看端口占用进程并关闭
    Debian 9 / Debian 10 / Ubuntu 18.04 / Ubuntu 18.10快速开启BBR加速 或 关闭BBR加速
    在ASP.NET Web API 2中使用Owin OAuth 刷新令牌(示例代码)
    在ASP.NET Web API 2中使用Owin基于Token令牌的身份验证
    Web API 2 的操作结果
    WebApi接口安全性 接口权限调用、参数防篡改防止恶意调用
    关于EF中使用Migrations的一些小提示
    Entity Framework 6 多对多增改操作指南
    用MVC5+EF6+WebApi 做一个考试功能(六) 仓储模式 打造EF通用仓储类
  • 原文地址:https://www.cnblogs.com/zhuqun/p/3922788.html
Copyright © 2011-2022 走看看