C# dataGridView控件中加入comboBox控件及注意事项

DataGridViewComboBoxColumn pCombo;
        private void Teaching_Add_Load(object sender, EventArgs e)
        {
            MyDBase DB = new MyDBase(DBUser.sserver,DBUser.DBName, DBUser.suser, DBUser.spasswd);
            DataSet DS= DB.GetRecordset("select * from view_teach_tmp");
            dataGridView1.DataSource = DS.Tables[0];
            pCombo = new DataGridViewComboBoxColumn();
            SqlDataReader RD = DB.DBDataReader("select * from expert");
            while (RD.Read())
            {
                string st = RD[0].ToString().Trim() + "." + RD[1].ToString().Trim();
                pCombo.Items.Add(st);
            }
            RD.Close();
            dataGridView1.Columns.Add(pCombo);
            dataGridView1.Columns[7].HeaderText = "请选择专家";
            DB.DBClose();
        }

说明:

1.dataGridView中添加comboBox控件利用初始化现成的类DataGridViewComboBoxColumn,本例先把从view_teach_tmp中读出的数据加到dataGridView1中,然后把初始化的comboBox控件pCombo加到最后一列,并给标题HeaderText命名。

2.pCombo控件中显示的是expert表中的“编码.专家姓名”,若要获取编码,可用下面的函数GetENo。

string GetENo(string st)
        {
            int n, i;
            string s = "";
            n = st.Length;
            for (i = 0; i < n; i++)
            {
                if (st.Substring(i, 1) == ".") return s;
                s = s + st.Substring(i, 1);
            }
            return "-1";
        }

3.调用函数GetENo:

string ENo;
for (int i = 0; i < n; i++)
            {
                if (dataGridView1.Rows[i].Cells[7].Value == null)
                {
                    MessageBox.Show("请选择专家", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                ENo = dataGridView1.Rows[i].Cells[7].Value.ToString();
                ENo = GetENo(ENo);
            }

特别说明:

要判断pCombo控件是否全都选值,要使用if (dataGridView1.Rows[i].Cells[7].Value == null),起初使用if (dataGridView1.Rows[i].Cells[7].Value.Tostring().Trim().Length==0)语句,直接报错,打死都找不出问题所在。

时间: 2024-12-09 23:01:43

C# dataGridView控件中加入comboBox控件及注意事项的相关文章

在DataGridView控件中加入ComboBox下拉列表框的实现

在DataGridView控件中加入ComboBox下拉列表框的实现 转自:http://www.cnblogs.com/luqingfei/archive/2007/03/28/691372.html 虽然在Visual Studio中 DataGridView控件的DataGridViewComboBoxColumn可以实现下拉列表框,但这样的列会在整列中都显示下拉列表框,不太美观,而且还要用代码实现数据绑定.本文介绍一种只在当前编辑单元格中显示下拉列表框的方法,供大家参考. 首先新建一个W

JScrollPane控件中添加其他控件的问题&&JScrollPane设置滚动条&&调整滚动速度

如果要在JScrollPane控件中添加其他控件,不能用下面这种方法 JScrollPane j = new JScrollPane();j.add(new JButton("点击")); 只能通过以下方法添加 JScrollPane j = new JScrollPane(new JButton("点击")); 或者 JScrollPane j = new JScrollPane();j.getViewport().add(new JButton("点击

winform 中调用用户控件中 嵌套用户控件的事件

工作了很久,一直没有很深入的了解C#中的委托和事件. 来到新公司,主要的工作就是使用委托和事件操作数据.一下子不知道该如何下手.各方请教大神,得出下面的方法 1. 在A控件中定义一个事件,B控件触发的时候,调用一下这个事件.然后再在A的父级控件中写方法,+=的方式把方法委托给A的事件就行了 窗体: private void Form1_Load(object sender, EventArgs e)        {            UC_Content content = new UC_

事件委托应用:在父控件中创建子控件,并接收值

传值过程使用委托方法 定义一个打开按扭,一个文本框 1 /// <summary> 2 /// 增加父控件 3 /// </summary> 4 public void AddParent(BaseControl ctl) 5 { 6 foreach (Control ct2 in this.Parent.Controls) 7 { 8 if (ct2.Name == ctl.Name) { 9 ct2.Focus(); 10 return; 11 } 12 } 13 ctl.Wi

WinForm------GridControl控件中使用SearchLookUpEdit控件的方法

1.在数据库添加两张表,拥有主外键关系 主键表: 外键表: 2.往工具栏里拖出GridCont控件,并增加相应的列,这里对"省份"进行修改,"FileName"里面的值与数据库的列名对应,下面的"(Name)"可以与FileName相同: FileName:ProvinceID (Name):ProvinceID 3.找到"ColumnEdit"属性,点击添加"SearchLookUpEdit"控件: 4.

ASP.NET- 查找Repeater控件中嵌套的控件

如何在Repeater的HeaderTemplate和FooterTemplate模板中寻找控件?在Repeater的ItemTemplate模板中的控件,我们可以用Items属性来遍历行并用FindControl进行寻找. 如下所示:在Repeater的Item Command事件下下遍历: for(int i=0;i<repeater1.Items.Count;i++) { CheckBox cb=(CheckBox )repeater1.Items[i].FindControl("C

iOS下子控件中的子控件的位置转换成在父控件的位置

CGRect focusFrame = [_scrollView convertRect:_joinView.frametoView:self.view]; 这里_scrollView是self.view的子控件 _joinView是_scrollView的子控件,这里是计算出_joinView在self.view的位置, 当然还有其他类似的方法 [view convertPoint:<#(CGPoint)#> fromView:<#(UIView *)#>] [view conv

2014-07-30 DataGridView单元格ComboBox控件Index

项目是在DataGridView单元格中搞得ComboBox控件. 而且要根据ComboBox对应的不同选项,来确定界面上的另一个ComboBox控件是否可用. 这样问题就出来了: DataGridView中的ComboBox是没有事件的! 当更改了Combox中的值以后,必须用鼠标点一下别的地方(鼠标离开此单元格),才会走CellValueChanged事件...... 研究+百度了好久,都不行,终于在中午灵光一闪,搞定了! 思路就是把这个没有事件的单元格,变成有事件的控件: 1 //定义全局

DataGridView中内置控件常用事件使用心得

checkbox,button,imagebutton使用dataGridView1_CellContentClick private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { tb.Text+=string.Format("\r\n{0},Row:{1},Column:{2}","单元格内容单击!",e.RowIndex,e.ColumnInd