jQuery MiniUI

 找回密码
 立即注册
查看: 4174|回复: 9
打印 上一主题 下一主题

如何在datagrid中使用preload事件删除一些数据 [复制链接]

Rank: 1

跳转到指定楼层
楼主
发表于 2020-8-21 10:38:49 |只看该作者 |倒序浏览
如题,我想通过preload删除一些符合条件的数据,修改了e.data(跟踪后发现确实也删除掉了),但前台数据并没有减少,请问是我哪里写的不对?下面贴出代码:
  1. mini.get("GetProjectListByStatus_View").on("preload",function(e){

  2.         var tempData=e.data;
  3.         var value=mini.decode(e.data[0].value);
  4.         for (let index = value.length-1; index >=0 ; index--) {

  5.             if(value[index].project_shortname=="DTL"){
  6.                 value.remove(value[index]);
  7.             }
  8.         }
  9.         if(value.length==0){
  10.             tempData="";
  11.         }else{
  12.             tempData[0].value=mini.encode(value);
  13.             tempData[0].totalcount=value.length;
  14.         }
  15.         e.data=tempData;
  16.         
复制代码


Rank: 6Rank: 6

沙发
发表于 2020-8-21 14:54:34 |只看该作者
本帖最后由 哎呀 于 2020-8-21 15:00 编辑

  • var tempData=mini.clone(e.data);
  • for(var i = 0; i < tempData.length; i++){
  • if(tempData.project_shortname=="DTL") tempData.remove(tempData[i--]);
  • }
       e.data = tempData;

Rank: 1

板凳
发表于 2020-8-21 15:56:26 |只看该作者
哎呀 发表于 2020-8-21 14:54
  • var tempData=mini.clone(e.data);
  • for(var i = 0; i < tempData.length; i++){
  • if(tempData.pr ...

  • 老哥,你这个肯定不对啊,e.data 总共就一条,怎么能for循环呢

    Rank: 6Rank: 6

    地板
    发表于 2020-8-21 16:02:11 |只看该作者
    abrachen 发表于 2020-8-21 15:56
    老哥,你这个肯定不对啊,e.data 总共就一条,怎么能for循环呢

    mini-datagrid通过load加载数据时,返回的数据一定为e.data,这样才会自动设置数据,不然只能手动设置数据


    grid.setData(data),你应该返回的一个Map吧?你应该{"data": data, "totalCount": totalCount}这样返回数据,页面会自动赋值

    Rank: 8Rank: 8

    5#
    发表于 2020-8-21 16:15:07 |只看该作者
    abrachen 发表于 2020-8-21 15:56
    老哥,你这个肯定不对啊,e.data 总共就一条,怎么能for循环呢

    打断点检查你这段处理代码最后给e.data赋值里面到底有多少条数据

    Rank: 1

    6#
    发表于 2020-8-21 16:27:13 |只看该作者
    felt 发表于 2020-8-21 16:15
    打断点检查你这段处理代码最后给e.data赋值里面到底有多少条数据

    检查了,按我最上面的写法,最后e.data就是我要的77条,但实际显示还是78条;我想知道是不是在这个事件里修改了e.data就可以生效了?还是说需要别的什么写法?

    Rank: 6Rank: 6

    7#
    发表于 2020-8-21 16:33:38 |只看该作者
    abrachen 发表于 2020-8-21 16:27
    检查了,按我最上面的写法,最后e.data就是我要的77条,但实际显示还是78条;我想知道是不是在这个事件里 ...

    mini.get("GetProjectListByStatus_View").on("preload",function(e){

            var tempData=[];
            var value=mini.decode(e.data[0].value);
            for (let index = value.length-1; index >=0 ; index--) {

                if(value[index].project_shortname=="DTL"){
                    value.remove(value[index]);
                }
            }
            if(value.length){
               tempData.push({value: value, totalcount: value.length});
            }
            e.data=tempData;

    Rank: 1

    8#
    发表于 2020-8-21 16:38:17 |只看该作者
    我这边项目不管又多少条记录,e.data里面的数据都是只有1条,实际数据都在e.data[0].value里面,是不是miniui自带的不是这样?

    Rank: 6Rank: 6

    9#
    发表于 2020-8-21 16:44:22 |只看该作者
    本帖最后由 哎呀 于 2020-8-21 16:47 编辑
    abrachen 发表于 2020-8-21 16:38
    我这边项目不管又多少条记录,e.data里面的数据都是只有1条,实际数据都在e.data[0].value里面,是不是mini ...

    nimiui默认的应该是直接返回数据集合,后台直接返回List,如果返回Map,则可以将数据项放在{data: data}里,这样就可以直接默认直接赋值的,不然你需要手动设置值,你应该是把数据放在list返回的,页面应该要单独处理一下,你这个其实可以放在grid.load({}, function(e){ //逻辑处理    grid.setData(data)})这里处理的

    Rank: 8Rank: 8

    10#
    发表于 2020-8-21 16:55:01 |只看该作者
    abrachen 发表于 2020-8-21 16:38
    我这边项目不管又多少条记录,e.data里面的数据都是只有1条,实际数据都在e.data[0].value里面,是不是mini ...

    e.data=你要在表格里面展示的数据数组
    e.data=e.data[0].value;

    Archiver|普加软件

    GMT+8, 2024-9-28 06:19 , Processed in 1.022666 second(s), 10 queries .

    Powered by Discuz! X2

    © 2001-2011 Comsenz Inc.

    回顶部