windows窗体中组合框的textvalue显示空值

时间:2015-04-15 17:09:27

标签: c# winforms

我有windows表单项目。我正在使用组合框来填充数据库中的一些数据。 Combobox正在正确显示表中的数据,但问题是当我试图获取所选文本的文本值时,它显示空值。 这是代码

    private void Form1_Load(object sender, EventArgs e)
    {
        loadCombobox("select designation, id from post order by id", txtDesignation, "designation", "id");
    }

    private void loadCombobox(string query, ComboBox name, string itemField, string valueField)
    {
        using(SqlConnection conn = new SqlConnection("Server=.\\SQLEXPRESS;Database=FIR_db; User Id = sa; Password = 9889922527"))
        {
        try
        {
            SqlDataAdapter sda = new SqlDataAdapter(query, conn);
            conn.Open();
            DataSet ds = new DataSet();
            sda.Fill(ds, "post");
            name.DisplayMember = itemField;
            name.ValueMember = valueField;
            name.DataSource = ds.Tables["post"];
        }
        catch (SqlException exc)
        {
            DialogResult dr = MessageBox.Show("Error in server. Could not load Designation.", "Error in server", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        }
    }

    private void txtDesignation_SelectedIndexChanged(object sender, EventArgs e)
    {
       DialogResult dr = MessageBox.Show(txtDesignation.SelectedText.ToString(), "Error in server", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }

此项目位于.net 4

2 个答案:

答案 0 :(得分:1)

SelectedText只是控件中任何文本的突出显示部分。

由于您已设置ValueMember,请尝试使用SelectedValue属性。

答案 1 :(得分:1)

您要访问的是comboBox.SelectedItem属性。

修改

从您的评论中看起来您正在使用ComboBox对象填充DataRowView。因此,您可能必须从行视图中获取您感兴趣的值。试试这个:

dataRowView.Row["ColumnName"]

其中dataRowViewComboBox中您选择的项目。您可能需要将其投射到DataRowView