我正在使用Windows Forms,我有一个包含值的组合框:
Apple
橘子
对
我的文本框包含值1,2和3,
apple = 1且oranges = 2且pair = 3。
这个关系在我的SQL表中,字段是Account和Name。如果将组合框选为橙色,如何将文本框的值更改为=?
基本上这是对我正在处理的程序的引用,该程序有一个帐户组合框,显示帐户名称(用户友好)。我需要名称ID帐号才能显示在文本框中。从这个文本框中,我可以将值传递给我的存储过程,该过程将获得该帐户的所有信息。
上述文字已过期。见下文!
要添加的注释是我的代码获取帐户详细信息并填充我的组合框。
有一种简单的方法吗?或者这是否需要加入C#类似于表上的SQL连接?
或者根本没有使用文本框,基本上我的组合将有2个字段为橙色,2但仅向用户显示橙色,但我的其他方法使用第二个字段2.
好的,所以这部分将acc字段添加到组合框中。
{
SqlCommand accountFill = new SqlCommand("SELECT name, acc FROM dbo.Customer", conn1);
SqlDataReader readacc = accountFill.ExecuteReader();
while (readacc.Read())
{
AddItem(readacc.GetString(0).ToString(), readacc, "name", "acc");
}
conn1.Close();
}
添加项目是我的任务使用的调用方法。
private void AddItem(string value, Object dataSource, string name, string acc)
{
if (accCollection.InvokeRequired)
{
accCollection.Invoke(new Action<string,Object,string,string>(AddItem), new Object[] { value });
}
else
{
//accCollection.Items.Add(value);
accCollection.DataSource = dataSource;
accCollection.DisplayMember = name;
accCollection.ValueMember = acc;
}
}
ERROR复杂数据绑定接受数据源,即数据源中的i.list或i.list源。
答案 0 :(得分:1)
ComboBox
类有两个属性ValueMember
和DisplayMember
。您需要将DisplayMember
属性设置为表或数据的名称,即。即橙色,苹果等...,并将ValueMember
属性设置为它们的Id:
combobox1.Datasource = readacc;
combobox.DisplayMember = 'name';
combobox.ValueMember = 'acc';
然后您只需使用两个属性SelectedValue
来获取ID或SelectedText
来获取值。例如,您可以使用ComboBox.SelectedIndexChanged
事件获取所选项目的ID:
private void ComboBox1_SelectedIndexChanged(object sender,
System.EventArgs e)
{
textbox2.text = int.parse(combobox1.SelectedValue.ToString());
}
或者你可以得到选择的文字,如:
textbox2.text = combobox1.SelectedText;
答案 1 :(得分:0)
DataTable dt = new DataTable("ListItem");
dt.Columns.Add("Id", Type.GetType("System.Int32"));
dt.Columns.Add("Name", Type.GetType("System.String"));
dt.Rows.Add(new object[]{1,"apple"});
dt.Rows.Add(new object[]{2,"oranges"});
dt.Rows.Add(new object[]{3,"pairs"});
comboBox1.DataSource = dt;
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember="Id";
textBox1.DataBindings.Add("Text", dt, "Id");
或
comboBox1.SelectedIndexChanged += new EventHandler(comboBox1_SelectedIndexChanged);
comboBox1.SelectedIndex = -1; //for initial step;
void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
textBox2.Text = comboBox1.SelectedValue.ToString();
}