我对一列进行排序。然后编辑该列中的一个值 - 该行会自动重新定位自身。
如果我在编辑之前禁用对该列(甚至整个网格(的排序,并在更改值时重新打开它CellValueChanged 事件,它再次排序。
如何仅在单击列标题时使网格排序?
编辑:
我接受了下面的建议作为答案,因为我正在寻找同一个方向,但为了让可能偶然发现这一点的人更清楚,这是我在 VB.net 中的实现。网格必须具有 EnableCustomSort = True。
Private Sub grid_CellClick(sender As Object, e As GridViewCellEventArgs) Handles grid.CellClick
If TypeOf sender Is GridHeaderCellElement Then
If dtGrid.DefaultView.Sort = e.Column.Name + " ASC" Then
dtGrid.DefaultView.Sort = e.Column.Name + " DESC"
'This line displays "down arrow" in column header, but makes sorting much slower for some reason.
'e.Column.SortOrder = RadSortOrder.Descending
Else
dtGrid.DefaultView.Sort = e.Column.Name + " ASC"
'e.Column.SortOrder = RadSortOrder.Ascending
End If
End If
End Sub
如果要一次性排序,则应在数据源中重新排序对象(在列表中移动对象或通过按新顺序添加项目然后重新反弹来创建新对象(。
然后,当然,您必须使用列标题上的单击事件来处理此问题。