关于ligerui 中 grid 表格的扩展搜索功能在远程数据加载时无法使用的解决办法
要想使用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 表格的扩展搜索功能在远程数据加载时无法使用的解决办法的更多相关文章
- 如何让在Html中特殊字符被数据加载时对于html标签的自动转义 补充
1.将此过滤器添加到ng-bind-html所绑定的数据中,便实现了在数据加载时对于html标签的自动转义. <div ng-repeat="item in list" &g ...
- JQuery插件:遮罩+数据加载中。。。(特点:遮你想遮,罩你想罩)
在很多项目中都会涉及到数据加载.数据加载有时可能会是2-3秒,为了给一个友好的提示,一般都会给一个[数据加载中...]的提示.今天就做了一个这样的提示框. 先去jQuery官网看看怎么写jQuery插 ...
- 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变量注释系统模块 摘要: 本文 ...
- Android中的WebView进行直接加载网页(要注意解决权限问题)
我们都知道Android的网络功能很不错,当然Android中WebView组件也挺不错,可以直接进行加载网页,我们可以把这个看做一个小型的浏览器\ [注]以下的一些内容我翻译了一下文档,可能有些翻译 ...
- ios中自定义tableView,CollectionView的cell什么时候用nib加载,什么时候用标识重用
做了一段时间的iOS,在菜鸟的路上还有很长的路要走,把遇到的问题记下来,好记性不如烂笔头. 在项目开发中大家经常会用到tableView和collectionView两个控件,然而在cell的自定义上 ...
- 浅谈Entity Framework中的数据加载方式
如果你还没有接触过或者根本不了解什么是Entity Framework,那么请看这里http://www.entityframeworktutorial.net/EntityFramework-Arc ...
- iOS App中数据加载的6种方式
我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数据加载等待,甚至在无网络的时候,整个处于不可用状态.那么我们怎么处理好界面交互中的加载设计,保证体验无缝衔接,保证用户没有漫长的等待感,而可以 ...
- ASP.NET中页面加载时文本框(texbox控件)内有文字获得焦点时文字消失
代码如下: <asp:TextBox ID="TextBox1" runat="server" Height="26px" MaxLe ...
- APP中数据加载的6种方式-b
我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数据加载等待,甚至在无网络的时候,整个处于不可用状态.那么我们怎么处理好界面交互中的加载设计,保证体验无缝衔接,保证用户没有漫长的等待感,而可以 ...
随机推荐
- [King.yue]VS2012 无法启动IIS Express Web服务器的解决方案
打开VS2012解决方案资源管理器 -> 点选 Web 项目选择 -> 属性 -> Web -> 选择“使用 Visual Studio 开发服务器” -> 选中“自动分 ...
- iPhone 崩溃日志解析
方法一.在编译时保留xx.app, xx.app.dSYM在/user目录下,xcode->orgernize->Device Logs就能够自动部分定位地址 方法二.xcode 有自带的 ...
- window上使用GIT的个人经验(入门级)
0.安装 使用google上的msysgit http://code.google.com/p/msysgit/downloads/list 尽量用最新版的吧 1.KEY 关于 key,.ssh里面的 ...
- 解决SQL数据库无法脱机的问题
数据库无法脱机:原理——有人在占用. 解决办法: select * from master.sys.sysprocesses where dbid=db_id('数据库名称') kill [id]
- scala学习笔记(四)样本类与模式匹配
访问修饰符 格式:private[x]或protected[x],x指某个所属包.类或单例对象,表示被修饰的类(或方法.单例对象),在X域中公开,在x域范围内都可以访问: private[包名]:在该 ...
- HW4.32
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- 如何把.rar文件隐藏在一个图片内
首先假设我们要隐藏的.rar文件叫a.rar,图片叫a.jpg.先把他俩放到同一个目录下,然后通过“cmd”进入windows命令行,进入目标目录下,使用以下命令进行隐藏: copy/B a.jpg ...
- get方法
public string HttpGet(string Url, string postDataStr) { HttpWebRequest request = (HttpWebRequest)Web ...
- Yii2 多域名跨域同步登录退出
在平台开发过程中,项目分为前台(frontend)www.xxx.com和后台(backend) yun.xxx.com两部分,绑定两个域名, 我们知道在没有绑定域名的时候前后台可以同步登录和退出,但 ...
- Win8启用便签
启动或显示 Sticky Notes : Win+R--->StikyNot.exe 备份Sticky Notes保存位置 : %AppData%\Microsoft\Sticky Notes\ ...