にバインドされているDatagridview
withがあります。ここから値を選択する
と、行の他のセルに に対応する値が表示されます。DatagridviewComboboxColumn
datasource
DatagridviewComboboxColumn
DatagridviewComboboxColumn
datatable
ここに私が試したコードがあります:
public Form2()
{
DataGridViewComboBoxColumn cmbcolumn = new DataGridViewComboBoxColumn();
DataGridView2.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(DataGridView2_EditingControlShowing);
}
private void DataGridView2_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
ComboBox combo = e.Control as ComboBox;
if (combo != null)
{
combo.SelectedIndexChanged -= new EventHandler(ComboBox_SelectedIndexChanged);
combo.SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged);
}
}
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
string item = null;
ComboBox cb = (ComboBox)sender;
if (cb.SelectedValue.ToString() != null)
{
item = cb.SelectedValue.ToString();
fillDGV(item, DataGridView2.CurrentRow);
}
}
private void fillDGV(string code, DataGridViewRow row)
{
SqlConnection con5 = new SqlConnection();
con5.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\database.mdf;Integrated Security=True;User Instance=True";
con5.Open();
SqlCommand cmd = new SqlCommand("SELECT LibArticle, Stock FROM Article WHERE CodeArticle = @CodeArticle", con5);
cmd.Parameters.AddWithValue("@CodeArticle", code);
SqlDataReader read = cmd.ExecuteReader();
if (read.Read())
{
row.Cells[1].Value = read[0].ToString();
row.Cells[2].Value = read[1].ToString();
}
}
このコードは、の最初の行に対してのみ完全に機能しdatagridview
ます。2 行目に、次のエラー メッセージが表示されました。
オブジェクト参照がオブジェクト インスタンスに設定されていません
この行で:
if (cb.SelectedValue.ToString() != null)
それを修正する方法??