2つのコンボボックス列を持つデータグリッドがあります。最初の列はカテゴリ列で、2番目の列はサブカテゴリ列です。ここで、最初のコンボボックス列でカテゴリを選択する必要があります。次に、この選択したカテゴリに含まれるサブカテゴリを2番目のコンボボックス列にバインドする必要があります。コンボボックス列の選択変更イベントを次のように記述しました。
private void Grid_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
ComboBox cb = e.Control as ComboBox;
if (cb!=null)
{ cb.SelectionChangeCommitted -= new EventHandler(cb_SelectedIndexChanged);
// now attach the event handler
cb.SelectionChangeCommitted += new EventHandler(cb_SelectedIndexChanged);
}
}
void cb_SelectedIndexChanged(object sender, EventArgs e)
{
int i = datagrdADDTEMP.CurrentCell.ColumnIndex;
int j = datagrdADDTEMP.CurrentCell.RowIndex;
if(i==0)
{
var tb = datagrdADDTEMP.EditingControl as ComboBox;
if (tb != null)
str = tb.SelectedValue != null ? tb.SelectedValue.ToString() : null;
Assesment_Business_layer.Businesslayer bl = new Assesment_Business_layer.Businesslayer();
DataSet ds = new DataSet();**strong text**
ds = bl.GetSubCatNamesBA(str);
cmbDataGridSubCategory.DataSource = ds.Tables[0];
cmbDataGridSubCategory.DisplayMember = "SubCategoryName";
cmbDataGridSubCategory.ValueMember = "SubCategoryCode";
}
}
}
そのうまく機能しています。特定の行の最初のコンボボックス列からカテゴリを選択すると、この選択されたカテゴリの関連するサブカテゴリが同じ行のサブカテゴリ列にバインドされます。それは良いことですが、問題は、特定の行の前にある2番目のコンボボックス列も同じサブカテゴリにバインドされていることです。
例えば
3行目の最初のコンボボックス列からカテゴリを選択した場合、そのサブカテゴリは1行目2行目と3行目でもバインドされます。jusは3行目のみにバインドしたいと考えています。
誰か助けてください、私はこの問題に悩まされています。