jQuery MiniUI

标题: datagrid通过setData数据页码、翻页、数据统计无效 [打印本页]

作者: Goldfish    时间: 2016-3-18 16:43:57     标题: datagrid通过setData数据页码、翻页、数据统计无效

如题,该如何解决?

作者: felt    时间: 2016-3-18 16:57:53

默认是服务端分页
setData话服务端又没处理,需要你客户端自己处理
参考我们客户端分页的示例
http://www.miniui.com/demo/#src=datagrid/pager_client.html
作者: miniui_myc    时间: 2016-5-6 14:36:47

felt 发表于 2016-3-18 16:57
默认是服务端分页
setData话服务端又没处理,需要你客户端自己处理
参考我们客户端分页的示例

仿照示例做了个相似的例子,只是数据不是用ajax获取的,我是从后台传过来的request中用el表达式一次性取到的数据,但是当翻页和重新设定页数时页面就卡住了,这是什么问题
作者: dforce    时间: 2016-5-6 15:37:58

miniui_myc 发表于 2016-5-6 14:36
仿照示例做了个相似的例子,只是数据不是用ajax获取的,我是从后台传过来的request中用el表达式一次性取 ...

可能是数据太复杂,前台计算处理的时间长了,也有可能是有死循环什么的
作者: miniui_myc    时间: 2016-5-6 16:53:35

dforce 发表于 2016-5-6 15:37
可能是数据太复杂,前台计算处理的时间长了,也有可能是有死循环什么的 ...

第一次展示有数据,数据不复杂也不多就是(序号,时间,内容),就是再翻页或设定条数时,没有执行grid.on监听事件,页面一直卡着
作者: dforce    时间: 2016-5-6 17:12:55

miniui_myc 发表于 2016-5-6 16:53
第一次展示有数据,数据不复杂也不多就是(序号,时间,内容),就是再翻页或设定条数时,没有执行grid.o ...

从你开始的描述里面,你的环境和我们客户端分页的示例只有数据获取的不同
那么请检查你前台获取到的数据到底和什么示例里面获取的数据是否一致,
如果一致,不可能有问题
作者: miniui_myc    时间: 2016-5-6 17:23:10

本帖最后由 miniui_myc 于 2016-5-6 17:35 编辑
dforce 发表于 2016-5-6 17:12
从你开始的描述里面,你的环境和我们客户端分页的示例只有数据获取的不同
那么请检查你前台获取到的数据 ...

刚才调试了下,
grid.on("beforeload", function (e) {
            alert("beforeload"+e.data);        e.cancel = true;

       //var pageIndex = e.data.pageIndex, pageSize = e.data.pageSize;
        var pageIndex = grid.pageIndex, pageSize = grid.pageSize;
        
        fillData(pageIndex, pageSize, dataResult, grid);
    });
第一次进页面时可以加载数据,当点翻页或设定条数时执行上面这个方法
测试e没有data这个属性,当我直接用grid可以获取页码属性值,但是也是当前的页码,然后第二次可以一直执行到fillData方法的setData完了就又卡住了。
不知道e是指的哪个对象,请提供一个grid.on监听方法的教程链接谢谢,我再试一下
打印e.data是undefined,打印e直接卡住不动了。。

补充:我的数据这么获取的
    var json = '${valuationlistjson}';
    var dataResult = mini.decode(json);


作者: dforce    时间: 2016-5-6 17:49:19

miniui_myc 发表于 2016-5-6 17:23
刚才调试了下,
grid.on("beforeload", function (e) {
            alert("beforeload"+e.data);         ...

[attach]7428[/attach]
只要你点击分页按钮,就会调用事件,事件里面肯定有我们的默认参数


作者: miniui_myc    时间: 2016-5-9 09:37:56

本帖最后由 miniui_myc 于 2016-5-9 10:05 编辑
dforce 发表于 2016-5-6 17:49
只要你点击分页按钮,就会调用事件,事件里面肯定有我们的默认参数

...

我用的是IE11,查看监视e中没有data属性,而是params属性中有pageindex,最后翻页页面可以加载出来了,但是表层会出现个miniui的loading一直卡着无法结束怎么回事,设置条数后也是loading卡着,grid.on执行完了为什么会卡在loading处
暂时处理方案:设置 showLoading="false"就没事了。。

作者: dforce    时间: 2016-5-9 12:31:28

miniui_myc 发表于 2016-5-9 09:37
我用的是IE11,查看监视e中没有data属性,而是params属性中有pageindex,最后翻页页面可以加载出来了,但 ...

如果你改动了数据来源,为什么会有问题
如果你解决不掉,请提供重现,让我们本地查看处理
作者: miniui_myc    时间: 2016-5-10 11:19:02

本帖最后由 miniui_myc 于 2016-5-10 11:24 编辑
dforce 发表于 2016-5-9 12:31
如果你改动了数据来源,为什么会有问题
如果你解决不掉,请提供重现,让我们本地查看处理 ...

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ include file="../../include/taglib.jsp"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>命题人详细信息</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    <script src="${pageContext.request.contextPath}/js/boot.js" type="text/javascript"></script>

    <style type="text/css">
            body{
                margin:0;padding:0;border:0;width:100%;height:100%;overflow:visible;
            }
    </style>
</head>
<body>
        <div class="mini-toolbar" id="headnav">
                <span>评价</span>
        </div>
   </div>
        <div id="datagrid1" class="mini-datagrid" sizeList="[20,30,50,100]" showLoading="false"
                pageSize="30" idField="pkId" style="width:100%;height:75%;">
        <div property="columns">
                <div type="indexcolumn" headerAlign="center" align="center" width="5%">序号</div>
                        <div field="colTime" headerAlign="center" align="center" width="10%">时间</div>
                        <div field="colContent" headerAlign="center" align="left">评价内容</div>
                        <!--
                        <div field="pkId" headerAlign="center" align="center">编号</div>
                        <div field="pkCardid" headerAlign="center" align="center">IDcard</div>
                        <div field="colName" headerAlign="center" align="center">命题人</div>
                        <div field="colType" headerAlign="center" align="center">类型</div>
                         -->
        </div>
    </div>
</body>
<script type="text/javascript">
    mini.parse();
    var grid = mini.get("datagrid1");
   
    var json = '${valuationlistjson}';
    var dataResult = mini.decode(json);
   
    // 分页填充细节处理
    function fillData(pageIndex, pageSize, data, grid) {
        var totalCount = data.length;
        var arr = [];
            var record = null;
        var start = pageIndex * pageSize, end = start + pageSize;
        for (var i = start, l = end; i < l; i++) {
            record = data;
            if (!record) continue;
            arr.push(record);
        }
        
        grid.setTotalCount(totalCount);
        grid.setPageIndex(pageIndex);
        grid.setPageSize(pageSize);

        grid.setData(arr);
    }
   
        // 监听分页前事件,阻止后自行设置当前数据和分页信息
    grid.on("beforeload", function (e) {
        e.cancel = true;
                var params = e.params;
                if(params==null) params = e.data;
        var pageIndex = params.pageIndex, pageSize = params.pageSize;
        
        fillData(pageIndex, pageSize, dataResult, grid);
    });
   
    // 第一次设置
    fillData(0, grid.getPageSize(), dataResult, grid);
   
</script>
</html>


注:传过来的json数据是直接把数据库中查出来的list转成json传过来的,没有添加total和data属性,浏览器是IE11,现在这个可以正常加载和翻页,showLoading="false"如果把这个属性置为true翻页加载完数据后会卡在loading处无法消失
作者: felt    时间: 2016-5-10 13:17:19

miniui_myc 发表于 2016-5-10 11:19
命题人详细信息
   
   

这种加载默认应该是不会出现showLoading的提示的,本地测试了一下也没发现有这个遮罩提示
作者: miniui_myc    时间: 2016-5-10 13:30:04

felt 发表于 2016-5-10 13:17
这种加载默认应该是不会出现showLoading的提示的,本地测试了一下也没发现有这个遮罩提示 ...

那咋回事啊,如果把标签上这个属性设置去掉 showLoading="false"  ,我的页面在grid.on加载完就会出来loading卡住。。
作者: felt    时间: 2016-5-10 14:16:00

miniui_myc 发表于 2016-5-10 13:30
那咋回事啊,如果把标签上这个属性设置去掉 showLoading="false"  ,我的页面在grid.on加载完就会出来loa ...

不知道你的这个showLoading是怎么出来的,应该是url加载才会有这个遮罩,加载完就会自动消失
你既然设置false就没问题,就先这样处理吧




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