我有一个名为 GridView1 的数据网格视图,它有两列,每列都是组合框,我需要能够根据第一个组合框更改其中一个组合框中的项目。组合框是动态创建的,并且值与单个数据集绑定。最初,当我加载表单时,一切都很完美,但是当我更改第一个组合框的值时,第二个组合框的值不会改变。我尝试使用gridview 的EditingControlShowing事件,然后将SelectedIndexChanged应用于组合框,但仍然无法弄清楚。
网格视图组合框
DataGridViewComboBoxColumn seccol = new DataGridViewComboBoxColumn();
seccol.DataSource = semch.Tables["secall"];
seccol.Name = "SSSS";
seccol.DisplayMember = "SSSSNAME";
seccol.ValueMember = "SSSSID";
seccol.HeaderText = "SSSS";
seccol.DataPropertyName = "SSSSID";
seccol.DefaultCellStyle.Font = new Font("Microsoft Sans Serif", 10, FontStyle.Bold);
studpromo_gv.Columns.Add(seccol);
studpromo_gv.Columns["SEC"].DisplayIndex = 14;
studpromo_gv.Columns[14].HeaderCell.Style.BackColor = Color.LightSeaGreen;
EditingControlShowing 事件
ComboBox cb = e.Control as ComboBox;
if (cb != null)
{
cb.SelectedIndexChanged -= new EventHandler(cb_SelectedIndexChanged);
cb.SelectedIndexChanged += new EventHandler(cb_SelectedIndexChanged);
}
更新代码
if (studpromo_gv.CurrentCell.ColumnIndex == 13)
{
ComboBox cmbBox = (ComboBox)sender;
//int semx = Convert.ToInt32(cmbBox.SelectedValue);
int semy = studpromo_gv.CurrentRow.Index;
if (cmbBox != null)
{
try
{
using (MySqlConnection conn = new MySqlConnection(MySQLconnection))
{
conn.Open();
MySqlDataAdapter secgvda = new MySqlDataAdapter("SELECT ID,NAME FROM STABLE WHERE SID='" + cmbBox.SelectedValue + "'", conn);
DataSet semch = new DataSet();
secgvda.Fill(semch, "secall");
(studpromo_gv[14, semy] as DataGridViewComboBoxCell).DataSource = semch.Tables["secall"];
(studpromo_gv[14, semy] as DataGridViewComboBoxCell).DisplayMember = "NAME";
(studpromo_gv[14, semy] as DataGridViewComboBoxCell).ValueMember = "ID";
conn.Close();
conn.Dispose();
}
}
catch (Exception)
{
//Some Statements
}