jQuery MiniUI

标题: 如何在datagrid中使用preload事件删除一些数据 [打印本页]

作者: abrachen    时间: 2020-8-21 10:38:49     标题: 如何在datagrid中使用preload事件删除一些数据

如题,我想通过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.         
复制代码



作者: 哎呀    时间: 2020-8-21 14:54:34

本帖最后由 哎呀 于 2020-8-21 15:00 编辑

       e.data = tempData;


作者: abrachen    时间: 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循环呢
    作者: 哎呀    时间: 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}这样返回数据,页面会自动赋值
    作者: felt    时间: 2020-8-21 16:15:07

    abrachen 发表于 2020-8-21 15:56
    老哥,你这个肯定不对啊,e.data 总共就一条,怎么能for循环呢

    打断点检查你这段处理代码最后给e.data赋值里面到底有多少条数据
    作者: abrachen    时间: 2020-8-21 16:27:13

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

    检查了,按我最上面的写法,最后e.data就是我要的77条,但实际显示还是78条;我想知道是不是在这个事件里修改了e.data就可以生效了?还是说需要别的什么写法?
    作者: 哎呀    时间: 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;
    作者: abrachen    时间: 2020-8-21 16:38:17

    我这边项目不管又多少条记录,e.data里面的数据都是只有1条,实际数据都在e.data[0].value里面,是不是miniui自带的不是这样?
    作者: 哎呀    时间: 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)})这里处理的


    作者: felt    时间: 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;




    欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2