我认为在组合框中显示列是负责表单设计器中的这个字符串:
this.ComboBox1.DisplayMember = "name";
但是,我无法在“名称”附近添加任何内容,组合框显示在所有字符串中:System.Data.DataRowView
也许是错误的,请告诉我怎么做?
我只是从数据源中将表格作为组合框拖动:
加载表单时:
private void frmCheck_Load(object sender, EventArgs e)
{
this.ttzTableAdapter.Fill(this.dbDataSet.ttz, Convert.ToInt32(idFromWork.Text));
}
所以组合框显示,列表中只有“姓名”,我希望他在列表中显示“号码”和“姓名”。
"Convert.ToInt32(idFromWork.Text)"
显示名称的参数,其中 id_ttz(ID) = @idwork
最佳答案
DisplayMember
是 a string specifying the name of an object property包含在由 DataSource 属性指定的集合中。您不能指定要显示的多个属性。如果您尝试这样做,将找不到您的“复合属性”,并且对象将通过 ToString()
实现显示(这就是为什么您会看到 System.Data.DataRowView
字符串)。
如果需要显示对象的多个属性,可以create custom multi-column combobox并将它的弹出窗口实现为 ListView 或 DataGridView。
更新:您可以创建自己的匿名类型,而不是直接绑定(bind)到 DataView 的 DataTable,这将提供用于显示的格式化文本:
ComboBox1.DataSource = tdbDataSet.ttz.AsEnumerable()
.Select(row => new
{
Text = String.Format("{0,5} | {1}", row["id_ttz"], row["name"]),
Value = row["id_ttz"]
})
.ToList();
ComboBox1.DisplayMember = "Text";
ComboBox1.ValueMember = "Value";
关于c# - 如何在组合框中添加 2 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10961850/