SM30添加排序功能

如下图,使用最少的更改给SM30添加排序的功能。

8a4bccf4967b1c72202240b8f3802ea4.png

实现方法:

在直接给表或者维护视图创建表维护后,做下面几个步骤:

1、由使用标准GUI Status改为使用自己的GUI Status

83b9bc9ebd99746716063082f76f246d.png

c433c212648e3940dbd430ded08477cf.png

9388faa9d5760906054a429845d88d1e.png

2、修改生成的GUI Status,添加排序按钮。

需要修改EALX、ESLG、EULG。

03de2e6a2747ecfde1076d7f8fa33c41.jpeg

3、添加代码:

58d5f0d9773b0e60ce1345aae83ab281.jpeg

585aae9a1136934149f2ae6ec77da240.jpeg

MODULE sort_table INPUT.
  DATA: fname(40),
        offset TYPE i,
        len TYPE i.
  DATA: wa_dd03l TYPE dd03l.
  FIELD-SYMBOLS: <fs> .

  CHECK function(4) = 'SORT'.

  GET CURSOR FIELD fname .
  SPLIT fname AT '-' INTO fname fname .

  CLEAR: offset,len.
  SELECT * INTO wa_dd03l FROM dd03l
    WHERE tabname = x_header-maintview
    ORDER BY position.

    IF wa_dd03l-fieldname = fname.
      len = wa_dd03l-intlen.
      EXIT.
    ELSE.
      offset = offset + wa_dd03l-intlen.
    ENDIF.
  ENDSELECT.

  ASSIGN extract+offset(len) TO <fs>.

  IF function = 'SORTA'.
    SORT extract STABLE BY <fs> .
  ELSEIF function = 'SORTD'.
    SORT extract STABLE BY <fs> DESCENDING .
  ENDIF.
ENDMODULE.                 " sort_table  INPUT 

现在就可以在SM30实现排序的功能了:

b91333001022a55368ea7e4afa42c67d.jpeg

需要注意的点:

1、添加按钮的时候,如果是红色的非活动状态,要更改为活动状态

2、要注意激活Status

3、sort_table的代码只适合非UNICODE系统,如果是UNICODE系统需要做调整。

4、排序时不需要选中列,只要把光标放到需要排序的列内,点击排序按钮就可以了。

5、只支持单列排序。

2f2d3ca2091b886446bef35374e066fe.jpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,首先我们需要引入layui框架和jQuery库,然后创建一个HTML页面和一个JavaScript文件来实现花类信息管理。 HTML页面结构如下: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>花类信息管理</title> <link rel="stylesheet" href="layui/css/layui.css"> <script src="jquery-3.5.1.min.js"></script> <script src="layui/layui.js"></script> </head> <body> <div class="layui-container"> <div class="layui-row"> <div class="layui-col-md12"> <table id="flowerTable" class="layui-table" lay-filter="flowerTable"></table> </div> </div> </div> <script src="flower.js"></script> </body> </html> ``` 接下来,我们在JavaScript文件中实现表格的渲染、分页、排序、全选和管理操作。代码如下: ```javascript layui.use(['table', 'form'], function(){ var table = layui.table; var form = layui.form; //渲染表格 table.render({ elem: '#flowerTable', url: 'flower.json', toolbar: '#toolbar', cols: [[ {type: 'checkbox'}, {field: 'name', title: '花名', sort: true}, {field: 'price', title: '价格', sort: true}, {field: 'total', title: '总数量', sort: true}, {field: 'remaining', title: '剩余数量', sort: true}, {title: '管理', toolbar: '#barDemo'} ]], page: true }); //监听工具条 table.on('tool(flowerTable)', function(obj){ var data = obj.data; if(obj.event === 'edit'){ //修改 layer.alert('修改花名:'+ data.name); } else if(obj.event === 'del'){ //删除 layer.confirm('确定删除该行数据?', function(index){ obj.del(); layer.close(index); }); } }); //监听排序 table.on('sort(flowerTable)', function(obj){ console.log(obj.field); //当前排序的字段名 console.log(obj.type); //当前排序类型:desc(降序)、asc(升序)、null(空对象,默认排序) }); //全选 form.on('checkbox(allChoose)', function(data){ var child = $(data.elem).parents('table').find('tbody input[type="checkbox"]'); child.each(function(index, item){ item.checked = data.elem.checked; }); form.render('checkbox'); }); }); ``` 在代码中,我们使用了layui的table模块和form模块来实现表格的渲染、工具条的监听、排序、全选等功能。其中,我们通过url属性来指定表格的数据源,这里我们使用了一个名为flower.json的本地数据文件,可以根据实际情况进行修改。 最后,我们还需要在HTML页面中添加表格的工具条模板,代码如下: ```html <script type="text/html" id="toolbar"> <div class="layui-btn-container"> <button class="layui-btn layui-btn-sm" lay-event="add">添加</button> <button class="layui-btn layui-btn-sm" lay-event="delete">删除</button> </div> </script> <script type="text/html" id="barDemo"> <a class="layui-btn layui-btn-xs" lay-event="edit">修改</a> <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> </script> ``` 这样,一个简单的花类信息管理界面就完成了。用户可以通过表格的工具条进行添加、删除操作,也可以通过表格的排序功能来对花类信息进行排序。同时,用户还可以通过全选功能批量进行管理操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值