zoukankan      html  css  js  c++  java
  • 控件:DataGridView列类型

      DataGridView的列的类型提供有多种,包括有:

    (1)DataGridViewTextBoxColumn(文本列,默认的情况下就是这种) 
    (2)DataGridViewComboBoxColumn(组合框列,名字瞎起的,就是这个功能要用到的列) 
    (3)DataGridViewLinkColumn(链接列) 
    (4)DataGridViewButtonColumn(按钮列) 
    (5)DataGridViewCheckBoxColumn(打钩列) 

    一、DataGridViewComboBoxColumn

      实例:

                    DataTable dt = DBServiceHelper.businessDbHelper.Fill(UserInfo, "select  a.code,a.Name  from  tequip_ini a where a.equip_type in (1,6) ");
                    if (dt != null)
                    {
                        dataGridViewTextBoxColumn3.DataPropertyName = "code";
                        dataGridViewTextBoxColumn3.DisplayMember = "name";
                        dataGridViewTextBoxColumn3.ValueMember = "code";
                        dataGridViewTextBoxColumn3.DataSource = dt;
                    } 

              GrdReadRecord2.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(GrdReadRecord2_EditingControlShowing);

    
    

      实现每一行的该单元格具有不同的ComboBox项:  

            private void GrdReadRecord2_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
            {
                try
                {
                    if (GrdReadRecord2.CurrentCell.ColumnIndex == 5)
                    {
                        ComboBox cb = e.Control as ComboBox; 
                        if (cb != null)
                        {
                            DataTable dt = DBServiceHelper.businessDbHelper.Fill(UserInfo, " select  cast(0 as varchar(200)) as code ,'' as Name  UNION ALL    select  a.code,a.Name  from  tequip_ini a "+
                                " left join CardPosItem b on a.PosItem=b.id where   a.equip_type in(1,6) and  b.id= " + this.GrdReadRecord2.CurrentRow.Cells["ColPostItemID"].Value.ToString()); 
                            cb.DataSource = dt;
                            if (dt != null && dt.Rows.Count > 0)
                                cb.SelectedIndex = 0;
                        }
                    }
                }
                catch (Exception ex)
                {
                    ListBoxAdd(lHint2, "异常:" + ex.Message.ToString());
                }
            }

      值得注意的是:

        每一行单元格绑定的数据必须要存在列的Item内,即是在EditingControlShowing前要先设置DataPropertyName、DisplayMember、ValueMember、DataSource,EditingControlShowing查出的数据必须是DataSource的子集。不然就会认为是错误值,报错。

      获取选取值:

        获取ValueMember:GrdReadRecord2.Rows[e.RowIndex].Cells[5].Value.ToString();

        获取DisplayMember:GrdReadRecord2.Rows[e.RowIndex].Cells[5].EditedFormattedValue.ToString();

      

  • 相关阅读:
    FreeModbus TCP
    C#之用户自定义控件
    使用C库制作DLL
    C# Unable to load DLL 'WzCanDll.dll':找不到指定的模块
    C#之改变窗体icon图标、新建类文件、调用dll库
    sim800c GPRS模块的透传模式
    STM32上使用JSON
    STM32之串口IAP更新升级
    Fortran语言的REWIND和BACKSPACE 函数
    Code blocks 编译Fortran(转载)
  • 原文地址:https://www.cnblogs.com/qi123/p/8972147.html
Copyright © 2011-2022 走看看