要想使用grid里的扩展搜索功能,除了要引用ligerui主要的js文件外,还必须引入下面的JS文件:

1、Source\demos\filter\ligerGrid.showFilter.js

2、Source\lib\json2.js

(以1.19的文件包目录结构为基础)

以上两个文件中的第一个文件有bug会造成AJAX加载数据失败。

bug如下:

原文件有问题的代码段如下:

function loadData() {
var data = filter.getData();
if (g.dataAction == "server")
//服务器过滤数据
loadServerData(data);
}
else {
//本地过滤数据
loadClientData(data);
}
}

以上代码的if判断出现了问题,g.dataAction永远都不可能等于server因为g下根本没有dataAction属性。g变量存的是gird,而p才是存放grid的选项的options。可能作者一时疏忽打错了。纠正这个问题只需要将g改成p即解决。如下:

function loadData() {
var data = filter.getData();
//if (g.dataAction == "server")
if (p.dataAction == "server") {
//服务器过滤数据
loadServerData(data);
}
else {
//本地过滤数据
loadClientData(data);
}
}

这样就可以使用搜索条件通过AJAX加载数据了。

除了上面的问题以外,还有下面一个问题同时造成加载数据不成功。如下

如果想要通过搜索功能生成条件语句传递给后台通过AJAX的方式加载数据到表格的话,还要具备搜索控件生成语句的翻译后台程序,我自己使用的是c#.net。这个翻译程序的类库我也不记得是从那里下载来的了,所包含的文件如下:

FilterGroup.cs

FilterHelper.cs

FilterParam.cs

FilterRule.cs

FilterTranslator.cs

以上这些代码的作用是用来将gird表格中搜索控件所生成的语句翻译成sql语句。(以上文件中的代码也有bug,会产生异常)

bug出现在FilterTranslator.cs文件中的TranslateRule方法,部分代码如下:

public string TranslateRule(FilterRule rule)
{
StringBuilder bulider = new StringBuilder();
if (rule == null) return " 1=1 ";
if (currentParmMatch.ContainsKey(rule.field))
{
var field = currentParmMatch[rule.field]();
bulider.Append(paramPrefixToken + CreateFilterParam(field, "int"));
}

在这段代码中currentParmMatch有可能没有指定,那么这样就会造成这句判断语句出现异常而程序中止,从而获取不到任务数据。解决办法就是将这句修改成这样就可以了。

public string TranslateRule(FilterRule rule)
{
StringBuilder bulider = new StringBuilder();
if (rule == null) return " 1=1 ";
if(currentParmMatch!=null)
{
var field = currentParmMatch[rule.field]();
bulider.Append(paramPrefixToken + CreateFilterParam(field, "int"));
}

同样的问题在这个方法中出现了两次,还有一个在之前这几行代码的下面几行里:

else if (op != "isnull" && op != "isnotnull")
{
//如果值使用了 用户信息参数 比如 [EmptID] = {CurrentEmptID}
//if (rule.value != null && currentParmMatch.ContainsKey(rule.value.ObjToStr()))
if (rule.value != null && currentParmMatch.ContainsKey(rule.value.ToString()))
{
//var value = currentParmMatch[rule.value.ObjToStr()]();
var value = currentParmMatch[rule.value.ToString()]();
bulider.Append(paramPrefixToken + CreateFilterParam(value, "int"));
}

修改为:

else if (op != "isnull" && op != "isnotnull")
{
//如果值使用了 用户信息参数 比如 [EmptID] = {CurrentEmptID}
//if (rule.value != null && currentParmMatch.ContainsKey(rule.value.ObjToStr()))
if(rule.value!=null && currentParmMatch!=null)
{
//var value = currentParmMatch[rule.value.ObjToStr()]();
var value = currentParmMatch[rule.value.ToString()]();
bulider.Append(paramPrefixToken + CreateFilterParam(value, "int"));
}

这样就解决所有问题了。

关于ligerui 中 grid 表格的扩展搜索功能在远程数据加载时无法使用的解决办法的更多相关文章

  1. 如何让在Html中特殊字符被数据加载时对于html标签的自动转义 补充

    1.将此过滤器添加到ng-bind-html所绑定的数据中,便实现了在数据加载时对于html标签的自动转义. <div ng-repeat="item in list" &g ...

  2. JQuery插件:遮罩+数据加载中。。。(特点:遮你想遮,罩你想罩)

    在很多项目中都会涉及到数据加载.数据加载有时可能会是2-3秒,为了给一个友好的提示,一般都会给一个[数据加载中...]的提示.今天就做了一个这样的提示框. 先去jQuery官网看看怎么写jQuery插 ...

  3. win7/8系统中php5.3和5.4、5.5不能加载php_curl.dll解决办法

    win7/8系统中php5.3和5.4.5.5不能加载php_curl.dll解决办法   作者:用户 来源:互联网 时间:2016-06-23 18:54:33 php变量注释系统模块 摘要: 本文 ...

  4. Android中的WebView进行直接加载网页(要注意解决权限问题)

    我们都知道Android的网络功能很不错,当然Android中WebView组件也挺不错,可以直接进行加载网页,我们可以把这个看做一个小型的浏览器\ [注]以下的一些内容我翻译了一下文档,可能有些翻译 ...

  5. ios中自定义tableView,CollectionView的cell什么时候用nib加载,什么时候用标识重用

    做了一段时间的iOS,在菜鸟的路上还有很长的路要走,把遇到的问题记下来,好记性不如烂笔头. 在项目开发中大家经常会用到tableView和collectionView两个控件,然而在cell的自定义上 ...

  6. 浅谈Entity Framework中的数据加载方式

    如果你还没有接触过或者根本不了解什么是Entity Framework,那么请看这里http://www.entityframeworktutorial.net/EntityFramework-Arc ...

  7. iOS App中数据加载的6种方式

    我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数据加载等待,甚至在无网络的时候,整个处于不可用状态.那么我们怎么处理好界面交互中的加载设计,保证体验无缝衔接,保证用户没有漫长的等待感,而可以 ...

  8. ASP.NET中页面加载时文本框(texbox控件)内有文字获得焦点时文字消失

    代码如下: <asp:TextBox ID="TextBox1" runat="server" Height="26px" MaxLe ...

  9. APP中数据加载的6种方式-b

    我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数据加载等待,甚至在无网络的时候,整个处于不可用状态.那么我们怎么处理好界面交互中的加载设计,保证体验无缝衔接,保证用户没有漫长的等待感,而可以 ...

随机推荐

  1. nginx 健康检查和负载均衡机制分析

    nginx 是优秀的反向代理服务器,这里主要讲它的健康检查和负载均衡机制,以及这种机制带来的问题.所谓健康检查,就是当后端出现问题(具体什么叫出现问题,依赖 于具体实现,各个实现定义不一样),不再往这 ...

  2. [Tommas] dateadd() 函数用法

    DATEADD() 函数在日期中添加或减去指定的时间间隔. 语法 DATEADD(datepart,number,date) date 参数是合法的日期表达式.number 是您希望添加的间隔数:对于 ...

  3. LCD platform_device(s5pv210)

    devs.c:   static struct resource s3cfb_resource[] = { [0] = { .start= S5P_PA_LCD, .end= S5P_PA_LCD + ...

  4. platform机制

    最近在看SPI.I2C这样简单点的总线驱动程 序,从Linux2.6起,内核引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver.现在Linux中 大部分的 ...

  5. 五指cms标签说明汇总

    1.栏目列表标签 只有一级导航: {wz:content action="category" cid="0" pagesize="100" ...

  6. bzoj 1925 [Sdoi2010]地精部落(DP)

    Description 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi, ...

  7. POJ 3279 Fliptile (质量不错)

    题意:有一个M*N的棋盘,每一个格子只有两种状态0或1,每次可以选择一个格子执行翻转操作,并且与该格子相邻的4个格子都会被翻转,求将所有格子都翻转成0所需要的最小操作数,若有多种方案,输出字典序最小的 ...

  8. jsp简易文件上传(common.fileupload)

    昨天开始重新架构我的V&View(维视),之前写文章使用的是一个kindediter的插件,挺好用的.最近不知道咋了,出现了些小问题.早在写V&View的时候就想用以下两种方法实现文章 ...

  9. Java NIO 缓冲技术详解

    缓冲区(buffer)是从即将写入通道(channel)或刚刚从通道中读出的一段数据.它是一个持有数据,并扮演NIO通道端点的对象.缓冲区为数据访问和读写过程提供正式机制. 它是NIO和老版Java ...

  10. leptonica使用问题

    想要使用leptonica编写一个图像处理程序,或者调用leptonica/prog下例子程序,出现类似错误: leptTest ./test Error in pixReadStreamJpeg: ...