我有这样的代码来填充一个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"))
NextSharpLibrary显然是一些古老的图形组件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发布于 2014-02-12 21:30:47
在将项添加到列表框之前,您需要对datatable中的值进行排序。
假设您的项目中有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如果您使用的是属于数据集的强类型datatable,但这超出了您的问题范围,这将更加容易。
发布于 2014-02-12 21:26:34
此链接可能对您有所帮助: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#代码就在下面,我认为它们的含义应该非常相似。
发布于 2014-02-13 01:20:40
为此,您需要使用DataView。
Dim datav As New DataView
datav = dt.DefaultView
datav.Sort = "ColumnName DESC"其中dt = datatable是从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()https://stackoverflow.com/questions/21739787
复制相似问题