要想使用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. Get ListView items from other windows z

    This is more difficult than one might think. In order to get the information you're looking for, you ...

  2. SPOJ3267 D-query 离线+树状数组 在线主席树

    分析:这个题,离线的话就是水题,如果强制在线,其实和离线一个思路,然后硬上主席树就行了 离线的代码 #include <iostream> #include <stdio.h> ...

  3. [Jacky] Stoe load reload 区别

    load( Object options ) : Boolean 采用配置好的Reader格式去加载Record缓存,具体请求的任务由配置好的Proxy对象完成. reload( Object opt ...

  4. vijosP1115 火星人

    vijosP1115 火星人 链接:https://vijos.org/p/1115 [思路] 排列组合. 题目要求为求第下m个排列. 这里有两种方法,首选的是调用algorithm中的next_pe ...

  5. 问题-[DelphiXE2]提示第三控件不存在

    问题情况:在DelphiXE2启动时界面显示加载了控件,并且控件的路径也放在了环境变量中,但打开程序报第三控件不存在. 问题原因:是没有选择要加载的控件. 问题处理:点击Component->I ...

  6. opencv数据结构-MAT结构详解

    1.定义 OpenCV中的C结构体有 CvMat 和 CvMatND,但后续的应用中指出 CvMat 和 CvMatND 弃用了,在C++封装中用 Mat 代替,另外旧版还有一个 IplImage,同 ...

  7. 1513:二进制中1的个数 @jobdu

    题目1513:二进制中1的个数 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:1341 解决:455 题目描述: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 输入: ...

  8. Hibernate关联关系映射

    1.  Hibernate关联关系映射 1.1.  one to one <class name="Person"> <id name="id" ...

  9. .ssh 文件夹权限设置问题

    .ssh 文件夹权限 问题 今天遇到了 关于.ssh 文件夹夹 设置什么权限合适问题 :答案是 700 chmod 700 .ssh

  10. iOS中的字符串扫描类NSScanner

    新建一个Category,命名为UIColor+Hex,表示UIColor支持十六进制Hex颜色设置. UIColor+Hex.h文件, #import <UIKit/UIKit.h> # ...