日期:2014-05-18  浏览次数:20964 次

C# winform控制下拉列的数据源问题
C# code
string listSql = "select distinct MR_Name from MIS_MaterielRegiser";
                    OleDbCommand cmd = new OleDbCommand(listSql, ocnn);
                    OleDbDataAdapter da = new OleDbDataAdapter();
                    DataSet set = new DataSet();
                    da.SelectCommand = cmd;
                    da.Fill(set);
                    // 手动添加下拉列,并绑定数据源
                    DataGridViewTextBoxColumn column1 = new DataGridViewTextBoxColumn();
                    column1.HeaderText = "货料编号";
                    column1.SortMode = DataGridViewColumnSortMode.NotSortable;
                    this.dgv_InInfo.Columns.Add(column1);

                    DataGridViewComboBoxColumn column2 = new DataGridViewComboBoxColumn();
                    column2.DataSource = set.Tables[0];
                    column2.DisplayMember = "MR_Name";
                    column2.HeaderText = "货料名称";
                    column2.SortMode = DataGridViewColumnSortMode.NotSortable;
                    this.dgv_InInfo.Columns.Add(column2);

                    string ModelSql = "select MR_Model from MIS_MaterielRegiser";
                    ocmd = new OleDbCommand(ModelSql,ocnn);
                    oda = new OleDbDataAdapter(ocmd);
                    DataSet data = new DataSet();
                    oda.Fill(data);

                    DataGridViewComboBoxColumn column3 = new DataGridViewComboBoxColumn();
                    column3.HeaderText = "规格型号";
                    column3.SortMode = DataGridViewColumnSortMode.NotSortable;
                    this.dgv_InInfo.Columns.Add(column3);
                    column3.DataSource = data.Tables[0];
                    column3.DisplayMember = "MR_Model";


如上代码可见货料名称 和
C# code
规格型号
都是下拉列。并为 货料名称列绑定了数据源。我现在想控制 规格型号 这列的数据源。根据货料名称选择的值查出这个名称所有的型号,但是在Load事件里去绑定数据是肯定不行的。但是在其它事件里,比如cellendedit事件,又获取不到column3这个列名,直接用colums[2]又没有datasoure属性,所以想请高人给帮忙想个办法,不要用动态添加combox这个方法吧~太麻烦了!

------解决方案--------------------
应该在货料名称的selectChanged事件中根据选择的值查到所有的型号。并添加给规格型号列的DataGridViewComboBoxColumn