У меня есть сетевое представление, называемое GridView1, которое имеет два столбца, каждый из которых является комбинированным списком, мне нужно иметь возможность изменять элементы в одном из комбинированных списков на основе первого.Поле со списком создается динамически, а значения связаны с одним набором данных.Первоначально, когда я загружаю форму, все становится идеально, но когда я изменяю значение первого комбинированного списка, значения второго комбинированного списка не меняются.Я попытался с EditingControlShowing событием вида сетки и затем применил SelectedIndexChanged к комбинированному списку, но все еще не мог понять это.
Вид сетки Combox
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
}