c# - 如何在组合框中添加 2 列?

标签 c# winforms ado.net combobox

我认为在组合框中显示列是负责表单设计器中的这个字符串:

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

最佳答案

DisplayMembera 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/

相关文章:

c# - 如何在 C# 中将复选框颜色更改为深灰色(禁用)?

c# - 如何在 NUnit 3 中使用 ITestEventListener?

.net - 运行命令行进程并在该进程仍在运行时获取输出?

c# - 如何使我的 Windows 窗体应用程序吸附到屏幕边缘?

c# - sql连接字符串中 "Max Pool Size"的最大允许值是多少

c# - 如果 ASP.NET 5 应用程序在 Ubuntu 上运行,它可以与 MS SQL Server 通信吗?

c# - 存储 GUID 和 DateTime 对象列表的最佳方式

c# - 为什么在任务中运行的 Thread.Sleep 不会阻塞 WinForms UI 线程?

linq - 学习 LinqToSql 还是坚持使用 ADO.NET?

c# - SQL 服务器 : is there any performance penalty for wrapping a SELECT query in a transaction?