easyui 学习总结

2023-05-16

1.分页折行导致显示问题

问题描述:

1)缩小datagrid的宽度,直至分页刚刚折行。


2)此时再隐藏pageList按钮和刷新按钮。此时table底部将出现一个白条。

        $('#dg').datagrid({data: getData()}).datagrid('clientPaging')
                .datagrid("getPager").pagination({showRefresh: false, showPageList: false});


问题解决方法:

在用代码隐藏pageList和刷新按钮后,调用datagrid的resize方法。

        $('#dg').datagrid({data: getData()}).datagrid('clientPaging')
                .datagrid("getPager").pagination({showRefresh: false, showPageList: false});
        $('#dg').datagrid('resize');

提示:如果没有问题,就不要乱用resize,否则可能有其他显示问题。


2.datagrid客户端分页时显示空行(ShowEmptyRows)

point:使用datagrid的尾行(Foot rows)作为行的补充,动态的去添加尾行的个数,从而达到显示空行的效果。



<html>
<head>
    <title>test</title>
    <script type="text/javascript" src="../components/easyui_1.4/easyui-include.js"></script>

</head>
<body>
<table id="dg" title="Client Side Pagination" style="width:680px;" data-options="
                rownumbers:true,
                singleSelect:true,
                autoRowHeight:false,
                pagination:true,
                pageSize:5,
                pageList:[5],
                showFooter: true">
    <thead>
    <tr>
        <th field="inv" width="80">Inv No</th>
        <th field="date" width="100">Date</th>
        <th field="name" width="80">Name</th>
        <th field="amount" width="80" align="right">Amount</th>
        <th field="price" width="80" align="right">Price</th>
        <th field="cost" width="100" align="right">Cost</th>
        <th field="note" width="110">Note</th>
    </tr>
    </thead>
    <tbody>
    <tr>
        <td>Inv No 1</td>
        <td>2016-03-01</td>
        <td>Name 1</td>
        <td>339</td>
        <td>240</td>
        <td>81360</td>
        <td>Note 1</td>
    </tr>
    <tr>
        <td>Inv No 2</td>
        <td>2016-03-01</td>
        <td>Name 2</td>
        <td>639</td>
        <td>95</td>
        <td>60705</td>
        <td>Note 2</td>
    </tr>
    <tr>
        <td>Inv No 3</td>
        <td>2016-03-01</td>
        <td>Name 3</td>
        <td>440</td>
        <td>245</td>
        <td>107800</td>
        <td>Note 3</td>
    </tr>
    <tr>
        <td>Inv No 4</td>
        <td>2016-03-01</td>
        <td>Name 4</td>
        <td>828</td>
        <td>894</td>
        <td>740232</td>
        <td>Note 4</td>
    </tr>
    <tr>
        <td>Inv No 5</td>
        <td>2016-03-01</td>
        <td>Name 5</td>
        <td>189</td>
        <td>654</td>
        <td>123606</td>
        <td>Note 5</td>
    </tr>
    <tr>
        <td>Inv No 6</td>
        <td>2016-03-01</td>
        <td>Name 6</td>
        <td>475</td>
        <td>766</td>
        <td>363850</td>
        <td>Note 6</td>
    </tr>
    <tr>
        <td>Inv No 7</td>
        <td>2016-03-01</td>
        <td>Name 7</td>
        <td>367</td>
        <td>287</td>
        <td>105329</td>
        <td>Note 7</td>
    </tr>
    <tr>
        <td>Inv No 8</td>
        <td>2016-03-01</td>
        <td>Name 8</td>
        <td>251</td>
        <td>883</td>
        <td>221633</td>
        <td>Note 8</td>
    </tr>
    </tbody>
</table>
<script>
    // 分页
    function pagerFilter(data, datagrid) {
        if (typeof data.length == 'number' && typeof data.splice == 'function') {	// is array
            data = {
                total: data.length,
                rows: data
            }
        }
        var opts = datagrid.datagrid('options');
        var pager = datagrid.datagrid('getPager');
        pager.pagination({
            onSelectPage: function (pageNum, pageSize) {
                opts.pageNumber = pageNum;
                opts.pageSize = pageSize;
                pager.pagination('refresh', {
                    pageNumber: pageNum,
                    pageSize: pageSize
                });
                datagrid.datagrid('loadData', data);
            }
        });
        if (!data.originalRows) {
            data.originalRows = (data.rows);
        }
        var start = (opts.pageNumber - 1) * parseInt(opts.pageSize);
        var end = start + parseInt(opts.pageSize);
        data.rows = (data.originalRows.slice(start, end));

        var pageData = new Object();
        pageData.data = data;
        //判断是否添加空行
        var min = data.total - start
        var needCreateCount;
        if (min < opts.pageSize) {
            //差几个 补几个
            needCreateCount = opts.pageSize - min;
        }
        pageData.needCreateCount = needCreateCount;

        return pageData;
    }

    function pf_dg(data) {
        var pageData = pagerFilter(data, $(this));

        if (pageData.needCreateCount != undefined || pageData.needCreateCount != 0) {
            var footList = new Array();
            while (pageData.needCreateCount > 0) {
                footList.push(new Object());
                pageData.needCreateCount--;
            }
            $('#dg').datagrid('reloadFooter', footList);
        }
        return pageData.data;
    }

    $(function () {
        $('#dg').datagrid({loadFilter: pf_dg})
                .datagrid("getPager").pagination({showRefresh: false, showPageList: false});
        $("#dg").datagrid("resize");
    });
</script>
</body>
</html>

不足:在没有横向滚动条的状态下,可以正常显示。但是如果table的宽度小,出现横向滚动条的话,会有下面的问题。

虽然加上fitColumns:true会没有滚动条,但是里面的文字还是会看不清,目前还不知道怎么解,欢迎大家来共享思路。

     

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

easyui 学习总结 的相关文章

随机推荐