Sorting

本节提供有关在数据网格中对数据进行排序的信息。

GridControl-Grid View

Sort Data

默认情况下,最终用户可以按任何列对数据进行排序,但使用MemoExEdit、ImageEdit和PictureEdit在位编辑器的列除外。在运行时,单击列标题一次以升序排列数据。相应的单击将颠倒排序顺序。列标题中的排序图示符(向上或向下箭头)指示当前排序顺序。
在这里插入图片描述
要按特定列对数据进行排序,最终用户也可以右键单击此列的标题,然后选择“升序排序”或“降序排序”。
在这里插入图片描述

相关API

  • GridOptionsCustomization.AllowSort——禁用按任何网格列排序。
  • OptionsColumn.AllowSort——禁用按此特定列排序

Multi-Column Sorting

当用户单击列标题时,数据网格将放弃当前应用的排序,而当用户通过标题上下文菜单对数据进行排序时,数据栅格将保留该排序。因此,要按多列对数据进行排序,最终用户应该使用标题上下文菜单,或者在单击列标题时按住Shift键。在下图中,数据首先按“客户ID”字段升序排列,然后按订单日期降序排列。

在这里插入图片描述

Clear Sorting

要删除按特定列排序的数据,最终用户应单击该列的标题并按下Ctrl键。或者,用户可以右键单击此标题并选择“清除排序”。要同时删除按所有列排序,请选择“清除所有排序”。
在这里插入图片描述

相关API

  • GridOptionsCustomization.AllowSort——通过按住Ctrl键并单击列标题来防止用户取消数据排序,并禁用所有网格列的“清除排序”选项。
  • OptionsColumn.AllowSort——通过按住Ctrl键并单击此列的标题来防止用户取消数据排序,并禁用此列的“清除排序”选项。
  • GridView.PopupMenuShowing——允许您手动修改或删除上下文菜单项,用户可以使用它更改排序。下面的代码更改了“清除所有排序”项目行为,因此最终用户将无法删除按“订单日期”列预定义的排序。
using System.Linq;
using DevExpress.Utils.Menu;
//. . .
gridView1.PopupMenuShowing += GridView1_PopupMenuShowing;
//. . .
private void GridView1_PopupMenuShowing(object sender, PopupMenuShowingEventArgs e) {
    DXMenuItem clearSorting = e.Menu.Items.First(x => x.Caption == "Clear All Sorting");
    clearSorting.Click += ClearSorting_Click;
}

private void ClearSorting_Click(object sender, EventArgs e) {
    gridView1.SortInfo.ClearAndAddRange(new[] {
            new GridColumnSortInfo(colOrderDate, DevExpress.Data.ColumnSortOrder.Ascending)
        });
}

Sort Groups by Summary Values

数据网格可以根据这些组的摘要值对这些组进行排序。有关详细信息,请参阅摘要文章。
在这里插入图片描述

Sort Modes

默认情况下,具有LookUpEdit和ImageComboBoxEdit在位编辑器的列按编辑器的显示值对数据进行排序。其他列根据编辑器的编辑值对数据进行排序。使用GridColumn.SortMode属性以更改此排序模式。

在下图中,具有ImageComboBoxEdit的列被强制按优先级从低到高对项目进行排序。为此,请使用 GridColumn.SortMode必须更改为 ColumnSortMode.Value否则,项目将按显示值的字母顺序进行排序。

在这里插入图片描述

### Unity 中 SpriteRenderer 组件的 SortingOrder 属性使用及其问题 #### 探讨 SortingOrder 的作用机制 SortingOrder 是用于控制渲染顺序的关键属性之一。此整数值决定了对象在场景中的绘制优先级,较大的数字表示较高的优先级,在同一层内先被渲染[^1]。 #### 正确设置 SortingOrder 范围 需要注意的是,尽管 SortingOrder 类型为 int,其有效取值区间限定于 -32768 至 32767 。如果设定超出该范围,则可能导致 Sprite 失效无法正常显示[^5]。 #### 使用 SortingGroup 影响 SortingOrder 表现 当给精灵物体添加了 SortingGroup 组件之后,原先单独定义于各子物件上的 Sorting Layers 及 Order in Layer 将不再生效;此时整个组内的成员遵循统一的新排序逻辑执行渲染操作,类似于 UGUI 控件那样按照自底向顶的方式依次呈现出来[^4]。 ```csharp // 设置单个 SpriteRenderer 的 SortingOrder 示例代码 public void SetSingleSpriteOrder(SpriteRenderer spr, int order){ if(order >= -32768 && order <= 32767){ // 检查合法性 spr.sortingOrder = order; }else{ Debug.LogError("Invalid sorting order value!"); } } // 对带有 SortingGroup 的 GameObject 下所有 SpriteRenderer 应用相同 Ordering public void ApplyUniformOrderToGroup(Transform parentOfSprites, int uniformOrder){ foreach (Transform child in parentOfSprites) { var sr = child.GetComponent<SpriteRenderer>(); if(sr != null){ SetSingleSpriteOrder(sr,uniformOrder); } } } ``` #### 解决常见错误案例分析 有时开发者可能会遇到即使设置了正确的 SortingOrder 值却未能达到预期效果的情况。这可能是由于忽略了其他影响因素的存在,比如 SortingLayerName 或者 SortingGroup 的存在改变了原有的层次关系结构。因此,在排查此类问题时应全面考虑这些潜在变量的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值