要想使用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. 生产环境下JAVA进程高CPU占用故障排查

    问题描述:生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 问题分析:1,程序属于CPU密集型,和开发沟通过, ...

  2. [Stephen]Android的adb无法启动

    1.程序中运行收入cmd,打开dos命令窗口,在窗口中依次运行abd kill-server和  adb start-server 尝试重启adb服务 2.如果依然启动失败  dos命令窗口中键入  ...

  3. 多组 RadioButtonList 获取值

    <div class="row">    <table>        <thead><tr><th>操作</th ...

  4. Windows Azure -Azure 网站、云服务和虚拟机的对比

    Azure 网站.云服务和虚拟机对比 概述 Azure提供了几种方法来承载网站: Azure网站.云服务和虚拟机.本文帮助您了解选项和为您的Web应用程序做出正确选择. Azure网站是大多数web应 ...

  5. 从打车软件你能想到多少?盈利模式?商机?大数据?移动互联网蛋糕?生活方式改变withApp?

    物联网.云服务.大数据.. 淘宝.12306.卡通...一个产品改变一次生活方式. 打车app,无疑是改变生活方式的又一个产品.从打车软件,你能看到什么? 个人认为,打车软件值得各种投资方斥资,最重要 ...

  6. html5 做游戏 Quintus Sublime Text牛逼的神器

  7. https://lua-toolbox.com/

    Lua Toolbox https://github.com/bungle/lua-resty-session

  8. c++学生成绩管理系统

    虽然比较水 =.= 但是写了两节课+一个中午 都是强迫症的锅 http://www.cnblogs.com/wenruo/p/4940182.html #include <cstdio> ...

  9. storm的功能、三大应用

    storm的功能 Storm 有许多应用领域:实时分析.在线机器学习.持续计算.分布式 RPC(远过程调用协议,一种通过网络从远程计算机程序上请求服务). ETL(Extraction-Transfo ...

  10. Extending JavaScript Natives

    Most built-in JavaScript types are constructors whose prototypes contain the methods and other prope ...