0

我有 4 个主键字段的表。我将其加载到使用 C# 创建的 WinForm 应用程序的下拉列表中。

在下拉列表的 TextChanged 事件中,我有某个 TextBox,我想为下拉列表中选择的某个字段填写表格接收到的信息。

所以正如我所说的表有 4 个字段。我可以从数据集中将所有 4 个字段都变成值成员吗,或者你能告诉我这是否可能吗?

谢谢你。

Datatable dt=dba.getName(); cmb_name.ValueMember="id"; cmb_name.DisplayMember="name"; cmb_name.DataSource=dt;

这是正常格式.. 但我有更多关键字段.. 所以我需要添加更多关键字段..

4

4 回答 4

3

您可以使用DataSource属性将源数据绑定到ComboBox(例如实体列表或DataTable 等),然后将DisplayMemberComboBox 的属性设置为您要显示的字段的(字符串)名称。

在用户选择了一个项目后,您可以将其SelectedItem转换回原始行数据类型(实体、数据行等 - 它仍然与您输入的类型相同),然后您可以检索您的 4 个复合键以原始项目。

这样你就SelectedValue完全避免了这个问题。

编辑

填充如下:

cmb_name.DisplayMember = "name";
cmb_name.DataSource = dt;

// Ignore ValueMember and Selected Value entirely

当您要检索所选项目时

var selectedRow = (cmb_name.SelectedItem as DataRowView );

现在您可以检索 PK 的 4 个值,例如selectedRow["field1"], selectedRow["field2"], selectedRow["field3"] etc

但是,如果您的意思是要向用户显示4 列(即与您的表键无关),那么请参见此处如何绑定 ComboBox,以便显示成员是源数据表的 2 个字段的连接?

于 2012-03-22T15:11:29.123 回答
1
cmb_name.DisplayMember = "name";
cmb_name.DataSource = dt;
DataRowView selectedRow = (cmb_name.SelectedItem as DataRowView );

结果将在这里:

MessageBox.Show(selectedRow.Row[0].ToString());
MessageBox.Show(selectedRow.Row[1].ToString());
MessageBox.Show(selectedRow.Row[2].ToString());
MessageBox.Show(selectedRow.Row[3].ToString());
.....
于 2014-11-27T09:46:57.603 回答
0

如果您想从 ComboBox 中获取一些数据到 a 中,List您可以使用类似这样的东西

List<string> ListOfComboData = new List<string>();
ListOfComboData = yourComboBox.Items.OfType<string>().ToList<string>();

我不知道这是否是您的意思,因为问题的结构非常糟糕。我希望这有帮助...

编辑:将所选文本用于某些TextBox用途

yourTextBox.Text = youComboBox.Text;

如果SelectedIndexChanged您的ComboBox.

于 2012-03-22T15:04:28.663 回答
0

您可以通过以下课程遵循此处的方法:

public class ComboBoxItem
{
   public string Text { get; set; }
   public object[] PrimaryKey { get; set; }
}

private void Test()
{
    ComboboxItem item = new ComboboxItem();
    item.Text = "Item text1";
    item.PrimaryKey = new object[] { primaryKey1, primaryKey2, primaryKey3, primaryKey4};

    comboBox1.Items.Add(item);

    comboBox1.SelectedIndex = 0;

    MessageBox.Show((comboBox1.SelectedItem as ComboboxItem).Value.ToString());
}
于 2012-03-22T15:10:31.140 回答