簡體   English   中英

與數據庫組合框在C#中選擇索引值

[英]selected index value in C# with combobox with database

我是C#的新手,我有一個問題。 我想從組合框中選擇一個值,它應該在標簽上顯示它的年齡。

我的工作是這樣的:

 public void FillCombo()
        {
           SqlDataAdapter adap = new SqlDataAdapter("Select * from customers",con);

            DataTable dt = new DataTable();
            adap.Fill(dt);
            comboBox1.DataSource = dt;
            comboBox1.DisplayMember = "name";
            comboBox1.ValueMember = "id";

        }

  private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            con.Open();

           SqlCommand cmd1 = new SqlCommand("Select * from customers where name=@name ", con);
            cmd1.Parameters.AddWithValue("@name",comboBox1.SelectedItem));

           int i= cmd1.ExecuteNonQuery();

            if (i > 0)
            {
               SqlDataReader sqlrdr = cmd1.ExecuteReader();
            while (sqlrdr.Read())
            {
                String age= sqlrdr["age"].ToString();
                label1.Text = age;
            }

            }

 else{
MessageBox.Show("no value");
}

con.Close();
    }

即使我在數據庫中有值,它也不會顯示任何值消息。 我能做什么?

當您將DataSource設置為DataTable時,組合框中的每個項目都是一個DataRowView 因此,您已經在組合框中獲得了有關當前客戶年齡的信息。 無需再次調用數據庫。

您只需要使用SelectedItem屬性來檢索有關age字段或DataSource中存在的任何其他字段的信息

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    DataRowView rv = l.SelectedItem as DataRowView;

    // For safety, always check for null. 
    // It is possible that SelectedIndexChanged 
    // will be called even when there is no selection in the combobox
    if(rv != null)
    {
        label1.Text = rv["age"].ToString();
        ....
    }
}

嘗試此操作以獲得索引,值和所選名稱:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        ComboBox cmb = (ComboBox)sender;
        int selectedIndex = cmb.SelectedIndex;
        int selectedValue = (int)cmb.SelectedValue;
        ComboboxItem selectedName = (ComboboxItem)cmb.SelectedItem;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM