c# - Combobox SelectedValue 返回 System.Data.DataRowView 甚至转换为字符串

标签 c# winforms combobox dataset datasource

我试图在 ComboBox 的值更改后更改 TextBox 控件的值。我的代码在第一次 ComboBox 值更改时返回 System.Data.DataRowView。 这就是为什么我在第一次调用我的组合框时得到一个对象而不是实际值。

 private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {

            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["myconnectionString"].ConnectionString);
            con.Open();

            SqlDataAdapter da = new SqlDataAdapter();

            SqlCommand cmd= new SqlCommand("SELECT donor_name,ID FROM donor_detail",con);
            cmd.CommandType = CommandType.Text;
            da.SelectCommand = cmd;
            DataTable dt = new DataTable();
            da.Fill(dt);            
            DonorName.DataSource = dt;
            DonorName.DisplayMember = "donor_name";
            DonorName.ValueMember = "ID";
            con.Close();
        }

这是 ComboBox 的更改值事件,它应该在 ComboBox 中的值更改时也更改我的 TextBox 的值。

        private void DonorName_SelectionChangeCommitted(object sender, EventArgs e)
        {
            var id = Convert.ToString(DonorName.SelectedValue);

            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["myconnectionString"].ConnectionString);
            con.Open();

            String sql = "SELECT * from donor_detail WHERE ID=" + id + "";

            SqlCommand cmd = new SqlCommand(sql,con);
            SqlDataAdapter da = new SqlDataAdapter();
           cmd.CommandType = CommandType.Text;
            da.SelectCommand = cmd;
            DataTable dt = new DataTable();
            da.Fill(dt);
            MessageBox.Show(sql);          
mobile.Text = dt.Rows[0]["mobile"].ToString();


            con.Close();
        }

最佳答案

如前所述here和其他几个地方,如果您没有在显示和值成员之后指定数据源,就会发生这种情况。这是正确的顺序:

DonorName.DisplayMember = "donor_name";
DonorName.ValueMember = "ID";
DonorName.DataSource = dt;

关于c# - Combobox SelectedValue 返回 System.Data.DataRowView 甚至转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30403383/

相关文章:

vb.net - 当用户关闭应用程序时禁用对所有表单的验证

C# keyup 事件问题

wpf - 如果不指定祖先,绑定(bind)将不起作用

extjs - 将组合框中的日期与当前日期进行比较

vb.net - 进行绑定(bind)组合框选择时 Windows 窗体卡住

c# - Common.Logging 使用 PostSharp 和 NLog 2.0

c# - 使用 C# 远程使用 WUA

c# - 难以理解沿着局部和全局空间的统一运动

c# - if/else 在两个不同的 for 循环中迭代相同的变量

vb.net - 使用app.config文件指定应用程序vb.net的启动目录