Я пытаюсь поставить 3 переплетены DataGridViewComboBoxCell в моей DataGridView,значение DataGridViewComboBoxCell не является действительным
один за столом «catégorie», второй для таблицы «Статья» и третья для
«ArticleNonCon» Таблица. когда я выбираю catégorie второго
DataGridViewComboBoxCell должен дать мне статьи этой категории и
, когда я выбираю статью третьего DataGridViewComboBoxCell должен дать мне
серийных номеров этой статьи. Это код, я пробовал:
в кнопку мыши, который показывает вид:
if (con.State != ConnectionState.Open)
{
con.Open();
}
SqlCommand catCmd = new SqlCommand("SELECT IdCategorie, LibCategorieFr FROM Categorie", con);
DataTable catDt = new DataTable();
catDt.Load(catCmd.ExecuteReader());
((DataGridViewComboBoxColumn)dataGridView1.Columns["CategorieColumn"]).DataSource = catDt;
((DataGridViewComboBoxColumn)dataGridView1.Columns["CategorieColumn"]).DisplayMember = "LibCategorieFr";
((DataGridViewComboBoxColumn)dataGridView1.Columns["CategorieColumn"]).ValueMember = "IdCategorie";
и в CellEndEdit случае DataGridView:
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
switch (dataGridView1.Columns[e.ColumnIndex].Name)
{
case "CategorieColumn":
if (con.State != ConnectionState.Open)
{
con.Open();
}
SqlCommand artCmd = new SqlCommand("SELECT * FROM Article WHERE IdCategorie = @IdCategorie", con);
artCmd.Parameters.AddWithValue("@IdCategorie", dataGridView1.CurrentRow.Cells["CategorieColumn"].Value);
DataTable articleDt = new DataTable();
articleDt.Load(artCmd.ExecuteReader());
((DataGridViewComboBoxColumn)dataGridView1.Columns["Column3"]).DataSource = articleDt;
((DataGridViewComboBoxColumn)dataGridView1.Columns["Column3"]).DisplayMember = "LibArticleFr";
((DataGridViewComboBoxColumn)dataGridView1.Columns["Column3"]).ValueMember = "CodeArticle";
con.Close();
break;
case "Column3":
if (con.State != ConnectionState.Open)
{
con.Open();
}
SqlCommand numSerieCmd = new SqlCommand("SELECT * FROM ArticleNonCon WHERE CodeArticle = @CodeArticle", con);
numSerieCmd.Parameters.AddWithValue("@CodeArticle", dataGridView1.CurrentRow.Cells["Column3"].Value);
DataTable numSerieDt = new DataTable();
numSerieDt.Load(numSerieCmd.ExecuteReader());
((DataGridViewComboBoxColumn)dataGridView1.Columns["NumSerieColumn"]).DataSource = numSerieDt;
((DataGridViewComboBoxColumn)dataGridView1.Columns["NumSerieColumn"]).DisplayMember = "NumSerieArticle";
((DataGridViewComboBoxColumn)dataGridView1.Columns["NumSerieColumn"]).ValueMember = "id";
con.Close();
break;
}
}
Этот код работает отлично для первого запуска , но когда я попытаюсь изменить статью и выбрать серийные номера этой статьи из третьего datagridviewComboboxCell, я получил это исключение:
System.ArgumentException: DataGridViewComboBoxCell значение не является допустимым
Это исключение произошло также при попытке закрыть приложение.
Так как исправить эту ошибку или в каком событии datagridview я должен поместить свой код?
Заранее спасибо.
как вы привязываете свои данные к DataGridView? – stefankmitph
Datagridview не привязан, я просто связываю 3 DatagridviewComboboxCell – user4428204
, чего вы пытаетесь достичь? не имеют каких-либо данных (DataSource) в вашем DataGridView? – stefankmitph