0

にバインドされているDatagridviewwithがあります。ここから値を選択する と、行の他のセルに に対応する値が表示されます。DatagridviewComboboxColumndatasourceDatagridviewComboboxColumnDatagridviewComboboxColumndatatable

ここに私が試したコードがあります:

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)

それを修正する方法??

4

1 に答える 1

0

if (cb.SelectedValue.ToString() != null)

if条件をに変更します

if (cb.SelectedValue != null)
于 2015-01-21T08:43:21.767 に答える