Tablix表单设备列表按类型Z-A逆序排序问题求助
解决Tablix设备列表逆序排序问题
直接按设备名称字符串排序会因字母顺序规则(cmt的字母序列比cl靠前)导致排序混乱,要实现设备类型Z到A逆序,同类型内按编号升序的需求,可通过以下两种方式处理:
方法一:数据源层面提取排序字段
如果数据源是SQL查询,可直接在查询中提取设备类型和编号字段,方便后续Tablix排序:
SELECT DeviceName, -- 提取设备类型(截取名称中编号后的部分) RIGHT(DeviceName, CHARINDEX(' ', REVERSE(DeviceName)) - 1) AS DeviceType, -- 提取设备编号并转为整数 CAST(SUBSTRING(DeviceName, CHARINDEX('#', DeviceName)+1, CHARINDEX(' ', DeviceName) - CHARINDEX('#', DeviceName)-1) AS INT) AS DeviceNumber FROM YourDeviceTable
在Tablix中设置排序规则:
- 第一排序条件:按
DeviceType字段降序排列 - 第二排序条件:按
DeviceNumber字段升序排列
方法二:直接在Tablix中使用排序表达式
若无法修改数据源,可直接在Tablix的排序设置中使用表达式提取关键信息:
- 选中Tablix的详细行或对应分组,打开「排序」设置面板
- 添加第一个排序规则:
- 表达式:
=RIGHT(Fields!DeviceName.Value, LEN(Fields!DeviceName.Value) - CHARINDEX(' ', Fields!DeviceName.Value, CHARINDEX('#', Fields!DeviceName.Value))) - 排序方向:降序
- 表达式:
- 添加第二个排序规则:
- 表达式:
=CINT(MID(Fields!DeviceName.Value, CHARINDEX("#", Fields!DeviceName.Value)+1, CHARINDEX(" ", Fields!DeviceName.Value, CHARINDEX("#", Fields!DeviceName.Value)) - CHARINDEX("#", Fields!DeviceName.Value)-1)) - 排序方向:升序
- 表达式:
效果验证
设置完成后,设备列表将按预期排序:
Filter #1 cl Filter #2 cl Filter #1 cmt Filter #2 cmt
内容的提问来源于stack exchange,提问作者Cia92
相关产品推荐
相关产品推荐

