首页  >  文章  >  数据库  >  为什么我的 WinForms 列表框显示“System.Data.DataRowView”而不是实际值?

为什么我的 WinForms 列表框显示“System.Data.DataRowView”而不是实际值?

Barbara Streisand
Barbara Streisand原创
2024-11-02 03:55:30786浏览

Why Does My WinForms Listbox Display

为什么 WinForms Listbox 中使用 System.Data.DataRowView 而不是 Real Value?

在 WinForms 开发中,遇到 System.Data.DataRowView 而不是列表框中的实际值可能会令人费解。了解根本问题将使您能够有效地解决此问题。

在提供的代码片段中:

<code class="csharp">MySqlDataAdapter dAdapter = new MySqlDataAdapter(sqlStr, myConn);
DataTable dTable = new DataTable();
dAdapter.Fill(dTable);
dAdapter.Dispose();
lstNames.DisplayMember = "NameAndScore";
lstNames.DataSource = dTable;</code>

代码显示正确,因为 DataTable 是通过 MySqlDataAdapter 填充然后分配的作为 ListBox 控件的数据源。但是,DisplayMember 属性设置为“NameAndScore”,这是一个列别名。

将数据绑定到列表框时,DisplayMember 属性指定提供列表中显示的文本的列。通过将其设置为别名“NameAndScore”,您可以指示列表框显示字符串 System.Data.DataRowView 而不是实际数据,因为底层数据结构是表的 DataRowView 表示形式。

解决方案:

要纠正此问题并显示数据库中的实际值:

  • 将 DisplayMember 设置为实际列名称:
<code class="csharp">lstNames.DisplayMember = "Score";</code>
  • 使用 DataRowView 表示检索特定值:
<code class="csharp">DataRowView drv = (DataRowView)lstNames.SelectedItem;
String valueOfItem = drv["NameAndScore"].ToString();</code>

此方法允许您访问与所选项目关联的各个值,使您能够使用底层根据需要提供数据。

以上是为什么我的 WinForms 列表框显示“System.Data.DataRowView”而不是实际值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn