我的代码填充了SharpLibrary.WinControls.ListBoxEx
Dim MyListBox As SharpLibrary.WinControls.ListBoxEx
Private dataTable As System.Data.DataTable
dataTable = GetNames ' Function that returns a DataTable
MyListBox.Items.Clear()
For count = 0 To dataTable.Rows.Count - 1
MyListBox.Items.Add(dataTable.Rows(count)("Name"))
Next
SharpLibrary显然是一些古老的图形组件API。
我希望数据按字母顺序显示。是否可以对DataTable
进行排序?
编辑:另一种解决方案:
dataTable = GetNames ' Function that returns a DataTable
dataTable.DefaultView.Sort = "Name"
MyListBox.Items.Clear()
For count = 0 To dataTable.Rows.Count - 1
MyListBox.Items.Add(dataTable.DefaultView.Item(count)("Name"))
Next
答案 0 :(得分:2)
在将项目添加到列表框之前,您需要对数据表中的值进行排序。
假设你的项目中有Linq,那很简单。
Dim MyListBox As SharpLibrary.WinControls.ListBoxEx
Private dataTable As System.Data.DataTable
dataTable = GetNames ' Function that returns a DataTable
Dim temp = From r In dataTable Order By r.item("Name") select r
MyListBox.Items.Clear()
If temp IsNot Nothing AndAlso temp.Any Then
For count = 0 To temp.Count - 1
MyListBox.Items.Add(temp(count)("Name"))
Next
End If
如果您使用的是作为数据集一部分的强类型数据表,但这超出了您的问题的范围,那就更容易了。
答案 1 :(得分:0)
此链接可能会对您有所帮助:http://msdn.microsoft.com/en-us/library/73kk32zz(v=vs.110).aspx
编辑:
Dim view As DataView = table.DefaultView
view.Sort = "LastName, FirstName"
view.RowFilter = "LastName > 'M'"
PrintTableOrView(view, "Current Values in View")
' Create a new DataTable based on the DataView,
' requesting only two columns with distinct values
' in the columns.
Dim newTable As DataTable = view.ToTable("UniqueLastNames", True, "FirstName", "LastName")
这是我相信它在代码中完成的部分。
我真的不懂VB,但它不太难,因为C#代码就在下面,我认为它们的含义应该非常相似。
答案 2 :(得分:0)
您需要使用DataView
。
Dim datav As New DataView
datav = dt.DefaultView
datav.Sort = "ColumnName DESC"
其中dt
=您从getNames()
获得的数据表。
最后,执行此操作将其再次转换为datatable数据类型。
dt = datav.ToTable()
最终代码是
Dim datav As New DataView
datav = dt.DefaultView
datav.Sort = "ColumnName DESC" 'or ASC, or anything just search for dataview.
dt = datav.ToTable()
答案 3 :(得分:0)
dataTable.DefaultView.Sort = ColumnName & " ASC"