最近做一个统计方面的程序,有一个多表复合查询问题,我准备用DataGridView做成了这样的样式来实现:
     Dv中每一行包含这样的几列。
     第一列               第二列         第三列              第四列
     内容就是comboBox1   "=,<>"等      内容为comboBox2       并且、或者两选项     combboBox1,comboBox2的DataSource分别为dtMain,dtSub,在显示的时候第三列显示的内容是根据第一列的选项不同而改变的。
     
     当我选择“新增一条查询”时,Dv中这样增加一行内容,其中第1、3列是这样的。
      int index = dataGridView1.Rows.Add();
      ((DataGridViewComboBoxCell)dataGridView1.Rows[index].Cells[0]).DataSource = dtMain;
      ((DataGridViewComboBoxCell)dataGridView1.Rows[index].Cells[0]).DisplayMember ="Descs";
      ((DataGridViewComboBoxCell)dataGridView1.Rows[index].Cells[0]).ValueMember = "mID";
      ((DataGridViewComboBoxCell)dataGridView1.Rows[index].Cells[2]).DataSource = dtSub;
      ((DataGridViewComboBoxCell)dataGridView1.Rows[index].Cells[2]).DisplayMember = "Descs";
      ((DataGridViewComboBoxCell)dataGridView1.Rows[index].Cells[2]).ValueMember = "sID";
     我测试了一下,是可以获得各自的ValueMember的。
      我现在的问题是:当我在第1列选择某值后,怎样根据其值动态改变第3列中combobox中的值。
    
     如果不是在DataGridView中,实现起来很容易。在comboBox中的selectedIndexChanged中获取ValueMember的值后,在第3列关联的dtSub中用Select方法就可以筛选出来。
     但这是在DataGridView中,我就不知道怎样办了?     连夜上来请教大家了

解决方案 »

  1.   

    不要给这个绑定的DataTable设置复杂的验证,最好在提交前不要验证数据有效性如果能做到上面这点:可以处理被绑定DataTable的ColumnChanged的事件去修改第三列在DataTable中的值(修改前必须要第三列的ComboBox的Items属性包含建议值,然后强制更新DataGridView
      

  2.   

    我喝的有点大,不是太看明白你的意思,我举个例子
    比如填写FaPiao票面的一个程序,用DataGridView实现细节,其中商品名称和规格可选,在选定商品名称和规格后,自动填列单价栏.1.你这个应用和我的区别就是单价栏实际是一个ComboBox列2.因为DataGridView有一个特点,就是如果使用了ComboBox,那个这个单元格的值必须在下拉列表中出现,否则会报错.3.因为上面这条原因,你必须用一个合适的办法处理第三列单元格的当前值和可选列表的关系,防止出现上面的情况.如果上面这条你可以做到,那我所说的方法,就应该可以达到你的要求.*这个DataGridView必须绑定一个DataTable