vb.net - 使用checkedlistbox并得到这个结果“system.data.datarowview”
问题描述
当我使用这个简单的代码
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
Dim cheq As New System.Text.StringBuilder
For Each item In CheckedListBox1.CheckedItems
cheq.Append(item)
cheq.Append(" ")
Next
MessageBox.Show(" Your Checked Items are : " & cheq.ToString())
End Sub
并等待消息我找到这个结果
Your Checked Items are : system.data.datarowview
问题是什么?
解决方案
代码没有问题,只是与您的期望不匹配。此 CheckedListBox 绑定到数据表。当控件绑定到数据表时,它实际上是附加到了 DefaultView 属性暴露的 DataView 上,而 DataView 是 DataRowView 的一个集合
大概您想访问底层 DataRow,可通过 DataRowView 的 Row 属性访问。这可能是不必要的;您可以像获取 DataRow 一样从 DataRowView 中获取值;如果您的 DataRow 代表一个具有 Name 列的人,那么其中任何一个都会为您提供名称:
DirectCast(DirectCast(item, DataRowView)("Name"), String)
DirectCast(DirectCast(item, DataRowView).Row("Name"), String)
或者稍微整理一下:
For Each item In CheckedListBox1.CheckedItems.Cast(Of DataRowView)
cheq.Append(item("SOME_COLUMN_NAME_HERE"))
cheq.Append(" ")
Next