Telerik RadGridView 仅在列 header 上排序单击
Telerik RadGridView sort only on column header click
我对一列进行排序。然后编辑该列中的一个值 - 该行会自动重新定位。
如果我在编辑之前禁用该列(甚至整个网格)的排序并在值更改时重新打开它
CellValueChanged 事件,重新排序。
如何使网格仅在单击列时才排序header?
编辑:
我接受了下面的建议作为答案,因为我在寻找相同的方向,但为了让可能偶然发现这个的人更清楚,这是我在 VB.net 中的实现。网格必须有 EnableCustomSorting = 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
如果您想要 one-shot 排序,您应该在数据源中重新排序 object(移动列表中的 object 或通过在新订单然后反弹)。
然后,当然,您必须使用列 header 上的点击事件来处理此问题。
我对一列进行排序。然后编辑该列中的一个值 - 该行会自动重新定位。
如果我在编辑之前禁用该列(甚至整个网格)的排序并在值更改时重新打开它 CellValueChanged 事件,重新排序。
如何使网格仅在单击列时才排序header?
编辑:
我接受了下面的建议作为答案,因为我在寻找相同的方向,但为了让可能偶然发现这个的人更清楚,这是我在 VB.net 中的实现。网格必须有 EnableCustomSorting = 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
如果您想要 one-shot 排序,您应该在数据源中重新排序 object(移动列表中的 object 或通过在新订单然后反弹)。
然后,当然,您必须使用列 header 上的点击事件来处理此问题。