1

データベースからリストボックスに値を挿入し、ボタンのクリックでテキストを取得しています。しかし、私は次のエラーが発生しています

オブジェクト参照がオブジェクトのインスタンスに設定されていません

そのため、「selecteditem.text」は選択されたアイテムの値を取得しません...

String selectemail = "select email_id from [property].[dbo].[user_membership]";
SqlCommand cmd = new SqlCommand(selectemail, con);
cmd.Connection.Open();

ListBox1.DataSource = cmd.ExecuteReader();
ListBox1.DataTextField = "Email_ID"; 
ListBox1.DataBind();  

//on button click//       
protected void Button1_Click1(object sender, EventArgs e)
{
   ListItem item = new ListItem();
   item.Text = ListBox1.SelectedItem.Text;(error comes here)
   ListBox2.Items.Add(item.Text);
   ListBox1.Items.Remove(item.Text);
   ...
}
4

2 に答える 2

3

これにより、エラーが停止します。

//on button click//       
protected void Button1_Click1(object sender, EventArgs e)
{
        if (ListBox1.SelectedItem == null) return;

        ListItem item = new ListItem();
        item.Text = ListBox1.SelectedItem.Text;(error comes here)
        ListBox2.Items.Add(item.Text);
        ListBox1.Items.Remove(item.Text);
}

ユーザーが何も選択していないだけの問題だったようListBox1です。

編集


テストアプリを一緒に投げて確認しましたが、これは私にとってはうまくいきます:

    var dt = New DataTable()
    dt.Columns.Add("email_id");

    dt.Rows.Add("first");
    dt.Rows.Add("second");
    dt.Rows.Add("thrid");
    dt.Rows.Add("fourth");

    var lst = New System.Web.UI.WebControls.ListBox;

    lst.DataSource = dt;
    lst.DataTextField = "Email_ID";
    lst.DataBind();

    //lst.SelectedItem is null here
    lst.SelectedIndex = 1;

    //lst.SelectedItem is NOT null here
于 2011-03-21T12:09:41.500 に答える
1

コードをデバッグしますが、存在しないオブジェクトが ListBox1 コントロールであるか、ボタンが押されたときに実際には ListBox1 コントロールに項目が選択されていない可能性が高くなります。

于 2011-03-21T11:52:54.463 に答える