Liger UI 表格数据查找/通过条件加载数据

api上的例子是在本地过滤的,无法使用,自己摸索了一下。

javascript代码:

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

//初始化ligerui控件

$(function
(){

        maingrid = $("#maingrid").ligerGrid({

            columns: [

                { display: ‘类型‘, name:‘type‘},

                { display: ‘号码‘, name:‘number‘, editor:{type:‘text‘}},

                { display: ‘级别‘, name:‘level‘, editor:{type:‘text‘}}

            ],

            width: ‘100%‘,

            height:‘90%‘,

            enabledEdit: true,

            clickToEdit: false,

            //rownumbers:true,

            url:"<%=basePath%>number/getValidNumbers.action",

            parms:{numberFilter:$("#numberFilter").val(),numberArea:$("#numberArea").val()}  //此parms只在第一次加载时有效,之后刷新就不会获取查找条件了。

        //注意一下,parms而不是params,我开始写成params,怎么也传不进数据。不知道这个单词是不是作者写错了。

        });

        

    //另外,不要将$("form").serialize()当作参数传递给parms,因为serialize得到的数据是a=11&b=22这种形式,而parms需要的是对象。

    //alert($("form").serialize()); }); <br>

//查找号码

function
search(){

    //params中获取过滤条件

    var
params = { numberFilter:$("#numberFilter").val(),

              numberArea:$("#numberArea").val(),   //查询号码的过滤条件

              page:maingrid.options.page,      //注意:loadServerData不会再带上分页的信息,所以要手动加上分页的页数和每页个数。而表格的属性在maingrid的options里。

              pagesize:maingrid.options.pageSize  //注意2:grid加载ajax数据时,传递到后台的每页个数是pagesize,而表格的size属性用自动pageSize表示,S要大写。

            };

    //传入参数,调用loadServerData方法

    maingrid.loadServerData(params);

}

部分html代码如下:

<form id="gridParams">
号码筛选:<input id="numberFilter" type="text" name="numberFilter" />
号码区:<select name="numberArea" id="numberArea">
<option value="%">全部</option>
<option value="10">10</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="40">40</option>
<option value="50">50</option>
<option value="60">60</option>
</select>
<input id="btnOK" type="button" value="查找" onclick="search()" />
</form>

<div class="l-clear"></div> <br />
<div id="maingrid"></div>
</body>

编辑器真糟糕,想在代码里着色都不行,直接把html标签显示出来了。-_-!


更新:

发现了一个问题:如果点击表格上的翻页或刷新,还是未过滤的数据。无奈,只能继续摸索了。


解决:修改了ligerGrid.js源码

在ligerGrid.js中搜索loadData方法:

//刷新数据
loadData: function (loadDataParm)
{
var g = this, p = this.options;
g.loading = true;
g.trigger(‘loadData‘);
var clause = null;
var loadServer = true;
if (typeof (loadDataParm) == "function")
{
clause = loadDataParm;
if (g.lastData)
{
g.data = g.lastData;
} else
{
g.data = g.currentData;
if (!g.data) g.data = {};
if (!g.data[p.root]) g.data[p.root] = [];
g.lastData = g.data;
}
loadServer = false;
}
else if (typeof (loadDataParm) == "boolean")
{
loadServer = loadDataParm;
}
else if (typeof (loadDataParm) == "object" && loadDataParm)
{
loadServer = false;
p.dataType = "local";
p.data = loadDataParm;
}
//参数初始化
if (!p.newPage) p.newPage = 1;
if (p.dataAction == "server")
{
if (!p.sortOrder) p.sortOrder = "asc";
}

       
       //--------------------------------------------------------------
       //这里是参数,有page和pagesize分页信息,所以在这部分加上我自己的查询信息
       //--------------------------------------------------------------
var param = [];
if (p.parms)
{
var parms = $.isFunction(p.parms) ? p.parms() : p.parms;
if (parms.length)
{
$(parms).each(function ()
{
param.push({ name: this.name, value: this.value });
});
}
else if (typeof parms == "object")
{
for (var name in parms)
{
param.push({ name: name, value: parms[name] });
}
}
}
if (p.dataAction == "server")
{
if (p.usePager)
{
param.push({ name: p.pageParmName, value: p.newPage });
param.push({ name: p.pagesizeParmName, value: p.pageSize });

            //---------------------------------------------------------------
            //:START 将页面的查询条件加到param参数中去
var numberFilter = document.getElementById("numberFilter").value;
  var numberArea = document.getElementById("numberArea").value;
  if(numberFilter != null){
   param.push({name:"numberFilter", value:numberFilter});
  }
  if(numberArea != null){
param.push({name:"numberArea", value:numberArea});
  }
  //END 到这里结束。
   //----------------------------------------------------------------
}
if (p.sortName)
{
param.push({ name: p.sortnameParmName, value: p.sortName });
param.push({ name: p.sortorderParmName, value: p.sortOrder });
}
};
$(".l-bar-btnload span", g.toolbar).addClass("l-disabled");
if (p.dataType == "local")
{
g.filteredData = p.data || g.currentData;
if (clause)
g.filteredData[p.root] = g._searchData(g.filteredData[p.root], clause);
if (p.usePager)
g.currentData = g._getCurrentPageData(g.filteredData);
else
{
g.currentData = g.filteredData;
}
g._convertTreeData();
g._showData();
}
else if (p.dataAction == "local" && !loadServer)
{
if (g.data && g.data[p.root])
{
g.filteredData = g.data;
if (clause)
g.filteredData[p.root] = g._searchData(g.filteredData[p.root], clause);
g.currentData = g._getCurrentPageData(g.filteredData);
g._convertTreeData();
g._showData();
}
}
else
{
g.loadServerData(param, clause);
//g.loadServerData.ligerDefer(g, 10, [param, clause]);
}
g.loading = false;
},


(代码编辑器真心糟糕!一个打不开,一个有时候又不生效。)

这样改虽然可以,但感觉还是不太好。

可以修改一下源码来复用。

例如:加个方法,加个全局数组,将数据加到数组中去,然后将参数加到loadData方法里。

有时间试试!

Liger UI 表格数据查找/通过条件加载数据

时间: 2024-10-06 21:51:01

Liger UI 表格数据查找/通过条件加载数据的相关文章

Listview滑动时不加载数据,停下来时加载数据,让App更优

数据源配置(Adapter) package com.zhengsonglan.listview_loading.adapter; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Im

Android 下分批加载数据以及listView使用过程中的优化

需求:在开发过程中,listview加载的数据如果比较大,这时为了提高用户体验感,我们应该事先分批加载以及下拉刷新功能 1.首先,数据访问层需要提供分批加载功能的接口, 代码如下: package com.zaizai.safty.db.dao; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.

Android加载数据ListView优化内存实现

问题分析 在移动端项目开发中,基于加载大数据量的原因,经常出现内存溢出的现象,那么减少内存占用,在真实开发中着实很重要,下面介绍下ListView加载数据量大时解决思路: 我们应该碰到过这样的情况,对于加载的listview,我们慢慢滑动数据时,系统加载数据没有问题,但是当加快滑动数据时,就会出现内存溢出的问题(这里不考虑分页加载方法).总结这是因为手机屏幕显示的原因,每次加载数据是有限的,慢慢滑动数据,在加载数据的同时,系统能有时间回收不用的内存,才不会暴露问题,但是,加快滑动,内存回收GC来

DBMS_SCHEDULER执行PERL脚本加载数据

1.例子利用oracle 11g 的dbms_scheduler包执行perl脚本加载数据文件,其中主要用到三个过程分别为SET_JOB_ARGUMENT_VALUE,CREATE_JOB,RUN_JOB三个过程,其中三个过程的参数说明如下: create_job参数: Attribute Description job_name Name of the job job_class Name of the job class job_style Style of the job: REGULAR

树型部件分层加载数据实现思路,提高速度,提高效率

我们知道,树型部件中可以以树型展示数据出来.例如我们把组织机构展示出来,可以写业务表:select  dept_id,dept_name,upper_id from sa_dept_dict然后再设置树型关键列未 dept_id,上级列未upper_id.这样就出来了一个树型的数据. 这样在一般业务中是没有问题的,如果我们设想一下sa_dept_dict表中有成千上万条数据,这样直接一下全部读出来形成一棵树,效率可能就很慢.那如何来解决较好呢. 我们知道因为树型是可以一个一个节点展开的,那就可以

DHTMLX 前端框架 建立你的一个应用程序 教程(六)-- 表格加载数据

从数据库加载数据 这篇我们介绍从MySQL数据库中加载数据到表格 我们使用 MySql的数据库dhtmlx_tutorial 和表contacts 示例使用的是PHP平台和dhtmlxConnector 帮助库  因为这是实现服务器端逻辑最简单的方法   数据以XML格式输出. 环境自己搭建  相信C#的朋友 从数据库获取数据转化盛XML也不是难事. 加载数据到表格: 1.找到”db.sql“文件将表导入到本地数据库 2.在codebase 文件中添加一个php文件codebase 3.下载dh

使用Jquery-easyUI的datagrid从后台加载数据不成功的解决办法

最近在用easyUI做一个注册页面总是出现从后台数加载不成功的问题,后来在一个师兄的指导下通过debug模式终于发现问题并解决了,以下记录我解决这一问题的过程.开发环境:jdk1.7,工具:eclipse,框架:spring-mvc spring-mvc的配置代码 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/sche

vue2.0无限滚动加载数据插件

  做vue项目用到下拉滚动加载数据功能,由于选的UI库(element)没有这个组件,就用Vue-infinite-loading 这个插件代替,使用中遇到的一些问题及使用方法,总结作记录! 安装:npm install vue-infinite-loading –save 引入 ES6 import InfiniteLoading from 'vue-infinite-loading'; export default { components: { InfiniteLoading, }, }

SpringMVC+Jquery -页面异步加载数据

背景: 做项目时涉及到页面,当我打算在controller中传一个list到页面,然后通过<c:foreach>循环遍历出来时,同事说:你这样每次都要刷新,这都是几百年前使用的技术了.你用post实现异步加载数据.然后就...... ResultUtil.java 工具类: package com.sgcc.uds.fs.config.web.util; import java.util.HashMap; import java.util.Map; import net.sf.json.JSO