为什么 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 表示形式。
解决方案:
要纠正此问题并显示数据库中的实际值:
<code class="csharp">lstNames.DisplayMember = "Score";</code>
<code class="csharp">DataRowView drv = (DataRowView)lstNames.SelectedItem; String valueOfItem = drv["NameAndScore"].ToString();</code>
此方法允许您访问与所选项目关联的各个值,使您能够使用底层根据需要提供数据。
以上是为什么我的 WinForms 列表框显示“System.Data.DataRowView”而不是实际值?的详细内容。更多信息请关注PHP中文网其他相关文章!