【问题标题】:getting value of combobox to textbox将组合框的值获取到文本框
【发布时间】:2014-02-14 05:02:56
【问题描述】:

使用查询我已将数据库中的两列值称为一列。关键是现在我想选择一个值形式的组合框并将一列值放入文本框中。

例如

数据库中的两列值到下面的组合框中

10001 haider

10002 法赫德

10003 aitazaz

我用来从数据库中调用两个列值的 sn-p 是:

public void account()
        {
            con.Open();
            cmd.Connection = con;
            cmd.CommandText = "SELECT acc_no, acc_name FROM accounts_record";
            MySqlDataAdapter adpt = new MySqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            adpt.Fill(ds);

            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                cbacc.Items.Add(ds.Tables[0].Rows[i][0] + "   " + ds.Tables[0].Rows[i][1]);
            }

            con.Close();
        }

【问题讨论】:

  • 为避免保持连接打开,我建议在连接关闭后移动 for 循环

标签: c# winforms combobox textbox


【解决方案1】:

您应该分别向组合框添加值和文本。 这是一个例子ComboBox: Adding Text and Value to an Item (no Binding Source)

如果您必须在文本中显示 id,则必须在将所选文本放入文本框之前进行一些解析。

【讨论】:

  • 示例中给出的“10001”可能不是 id。如果您检查 select 语句,列名称是“acc_no”,这可能意味着帐号,因此是业务实体的属性
【解决方案2】:

使用组合框的 ComboBox.SelectedIndexChanged 事件来相应地填充文本框。使用http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selectedindexchanged(v=vs.110).aspx

【讨论】:

    【解决方案3】:

    如果您能够在选择更改时获得组合框的 2 值文本,那么您可以使用空格 (" ") 字符将其拆分,然后将第二个字符串放入文本框中。

    例如

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string[] splitedStr = comboBox1.SelectedText.Split(' ');
            textBox1.Text = splitedStr[1];
        }
    

    【讨论】:

    • 你能给我举个例子吗?
    【解决方案4】:

    你应该使用下面的代码

       private void Form1_Load(object sender, EventArgs e)
        {
                string conString = "Data Source=\\SQLEXPRESS;Initial Catalog=Test;Integrated                 Security=True";
                SqlConnection con = new SqlConnection(conString);
                SqlCommand cmd = new SqlCommand();
                con.Open();
                cmd.Connection = con;
                cmd.CommandText = "SELECT acc_no +'-' + acc_name as AccNoWithName , acc_no as ActNo FROM accounts_record";
                SqlDataAdapter adpt = new SqlDataAdapter(cmd);
                DataSet dsn = new DataSet();
                adpt.Fill(dsn);
                con.Close();
    
                comboBox1.DisplayMember = "AccNoWithName";
                comboBox1.ValueMember = "ActNo";
                comboBox1.DataSource = dsn.Tables[0];
       }
    
    
    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
                textBox1.Text = comboBox1.SelectedValue.ToString();
     }
    

    【讨论】:

    • 我很乐意为您提供帮助,但请让我知道您在上面提供的代码之间做什么或想做什么。
    • 我在文本框和组合框“System.Data.DataViewManagerListItemTypeDescriptor”中获取此数据
    • 这样做的主要目的是我想从组合框中的两个字段中获取数据,当我从组合框中单击项目时,我只想获取 acc_name 与 acc_num @keshavdas
    • 查看上面我尝试过并且工作正常的整个代码块。只需在最后使用和更新适当的对象,一切都会正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 2013-10-12
    • 2016-06-25
    • 2012-01-23
    相关资源
    最近更新 更多