我正在vb.net中开发Windows应用程序。
我有几个列的datagrid,我想对我选择的列进行排序。
如下图所示,我选择了ID列,当我点击排序按钮时,它应按升序或排序顺序排序。
(现在我不担心订单,我对代码更感兴趣。)
我已经检查了几个关于排序问题的问题,但是没有人回答它涉及哪些事件,他们只给出了一个代码。
到目前为止,我只能编写下面的代码来选择列,但这不起作用,因为我在代码中编写了硬编码的0列索引。
如何编写选择列和排序的代码?
Private Sub gvBatchList_ColumnHeaderMouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles gvBatchList.ColumnHeaderMouseClick
For Each c As DataGridViewColumn In gvBatchList.Columns
c.SortMode = DataGridViewColumnSortMode.NotSortable
c.Selected = False
Next
gvBatchList.SelectionMode = DataGridViewSelectionMode.FullColumnSelect
gvBatchList.Columns(0).Selected = True
End Sub
Imp注意:我正在使用Access数据库存储记录并在将记录绑定到网格视图时使用集合。
下面的代码显示了我如何绑定记录....
Private Sub LoadAllRegularEmployees()
Try
Me.Cursor = Cursors.WaitCursor
DataGridView1.AutoGenerateColumns = False
Dim oEmployees As New Employees
oEmployees.LoadAllRegularEmployees()
DataGridView1.DataSource = oEmployees
lblEmployeesCount.Text = "Toal Employees (" + oEmployees.Count().ToString + ")"
txtEmployeeSearch.Focus()
Me.Cursor = Cursors.Arrow
Catch ex As Exception
Me.Cursor = Cursors.Arrow
MessageBox.Show("Error :- " + ex.Message.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
答案 0 :(得分:0)
修改强>
如果一开始你没有成功......等等。
Select Case sortDescending
Case True
gvBatchList.Sort(gvBatchList.SelectedColumns(0), ListSortDirection.Ascending)
sortDescending = False
Case Else
gvBatchList.Sort(gvBatchList.SelectedColumns(0), ListSortDirection.Descending)
sortDescending = True
End Select
在这里,我定义了一个布尔sortDescending
,并用它来检查我们排序的方式。我将其初始化为False
,但如果您希望它首先按升序排序,则只需将其初始化为True
。
您还必须导入System.ComponentModel
才能使用ListSortDirection
。
希望这样做!
我认为这就是你所要求的:
gvBatchList.Sort(gvBatchList.SelectedColumns(0), SortOrder.Ascending)
或者,您可以使用SortOrder.Descending
向另一个方向排序。也许是这样的?
Select Case gvBatchList.SelectedColumns(0).SortMode
Case SortOrder.Descending
gvBatchList.Sort(gvBatchList.SelectedColumns(0), SortOrder.Ascending)
Case Else
gvBatchList.Sort(gvBatchList.SelectedColumns(0), SortOrder.Descending)
End Select
如果您的用户没有选择列,我无法保证会发生什么。
答案 1 :(得分:0)
objSort = objSort.OrderBy(Function(x)x.Assembly)。ToArray()