在datagrid中toolbar添加searchbox查询框,根据列范围查询数据,先看效果图:

1. searchbox采用easyui的Demo例子,再加以js扩展,根据datagrid中的列数据自动生成选择查询范围。

1     <div id="testa" style="display:inline;padding-top:17px;">
2 <!-- 这里的padding-top是让搜索栏向下点,也就是与"添加"等按钮对齐,但在HTML里面不好用,在jsp页面中已测试可用 -->
3 <input id="sss" class="easyui-searchbox" searcher="qq" prompt="请输入查询内容" style="width:200px"></input>
4 <div id="mm" style="width:100px">
5 </div>
6 </div>
 1             //循环列名,生成搜索的下拉列表
2 var fields = $('#dg').datagrid('getColumnFields');
3 var muit="";
4 for(var i=0; i<fields.length; i++){
5 var opts = $('#dg').datagrid('getColumnOption', fields[i]);
6 muit += "<div name='"+ fields[i] +"'>"+ opts.title +"</div>";
7 };
8 $('#mm').html($('#mm').html()+muit);
9 $('#sss').searchbox({
10 menu:'#mm'
11 });
12 //获取生成的搜索框
13 var a=$("#testa");
14 //将生成好的搜索框放入工具栏
15 $(".datagrid-toolbar").append(a);
16 });
17 function qq(value,name){
18 $('#dg').datagrid('load', { "searchKey": name, "searchValue": value });
19 }

2. 前台需将要查询的字段和值传给datagrid。其中searchKey为字段名,searchValue为所要查询的值。

1         function qq(value,name){
2 $('#dg').datagrid('load', { "searchKey": name, "searchValue": value });
3 }

3. 后台处理:接收前台传递的参数$_POST['searchkey'],$_POST['searchValue']

 1         public function read(){
2 $pagenum=isset($_POST['page']) ? intval($_POST['page']) : 1;
3 $rowsnum=isset($_POST['rows']) ? intval($_POST['rows']) : 10;
4 $User=M("User");
5 if(isset($_POST['searchValue']) and $_POST['searchValue']!=""){
6 $userlist=array();
7 $map[$_POST['searchKey']]=array('like',array('%'.$_POST['searchValue'].'%'));
8 //$userlist=$User->where($_POST['searchKey'].'="'.$_POST['searchValue'].'"')->limit(($pagenum-1)*$rowsnum.','.$rowsnum)->order('id asc')->select();
9 //$total=$User->where($_POST['searchKey'].'="'.$_POST['searchValue'].'"')->count();
10 $userlist=$User->where($map)->limit(($pagenum-1)*$rowsnum.','.$rowsnum)->order('id asc')->select();
11 $total=$User->where($map)->count();
12 if ($total==0){
13 $userlist=array("firstname"=>'',"lastname"=>'',"phone"=>'',"email"=>'',"id"=>'');
14 $json='{"total":'.$total.',"rows":['.json_encode($userlist).']}';
15 echo $json;
16 }else{
17 $json='{"total":'.$total.',"rows":'.json_encode($userlist).'}';//重要,easyui的标准数据格式,数据总数和数据内容在同一个json中
18 echo $json;
19 }
20 }else{
21 $total = $User->count(); //计算总数
22 $userlist=array();
23 $userlist=$User->limit(($pagenum-1)*$rowsnum.','.$rowsnum)->order('id asc')->select();
24 if ($total==0){
25 $userlist=array("firstname"=>'',"lastname"=>'',"phone"=>'',"email"=>'',"id"=>'');
26 $json='{"total":'.$total.',"rows":['.json_encode($userlist).']}';
27 echo $json;
28 }else{
29 $json='{"total":'.$total.',"rows":'.json_encode($userlist).'}';//重要,easyui的标准数据格式,数据总数和数据内容在同一个json中
30 echo $json;
31 }
32 }
33 }

4.分析后台代码

  1. 首先判断是否要生成查询数据,条件是传递参数$_POST['searchKey']存在且不为空 。

    if(isset($_POST['searchValue']) and $_POST['searchValue']!="")

  2. 采用like查询语言扩大查询范围,$map[$_POST['searchKey']]=array('like',array('%'.$_POST['searchValue'].'%'));生成的查询代码是:$_POST['searchKey']

    like % $_POST['searchValue'] %

  3. 生成的查询记录要符合datagrid的json数据格式。其中json数据的总记录用count()生成,需位于where条件之后。

http://www.cnblogs.com/m199/archive/2012/12/20/2825720.html

ThinkPHP与EasyUI整合之三(searchbox):在datagrid中查询指定记录的更多相关文章

  1. ThinkPHP与EasyUI整合之二(datagrid):删除多条记录

    学习EasyUI已有一段时间了,现在开始逐步把平时学习的细节和难点记录下来. 1. datagrid选中多条记录的语句是: var rows = $('#dg').datagrid('getSelec ...

  2. Spring+SpringMVC+MyBatis+easyUI整合优化篇(七)图片上传功能

    日常啰嗦 前一篇文章<Spring+SpringMVC+MyBatis+easyUI整合优化篇(六)easyUI与富文本编辑器UEditor整合>讲了富文本编辑器UEditor的整合与使用 ...

  3. easyui datagrid中 多表头方法总结

    easyui datagrid中怎么设置表头成多行显示呢?其实很简单,就是给datagrid的columns属性设置成多个数组就行了.下面直接看例子吧,这是一个两行表头的,按照此方法,还可以设置三行表 ...

  4. 如何用easyui+JAVA 实现动态拼凑datagrid表格(续)

    前面一段时间写了一篇文章: 如何用easyui+JAVA 实现动态拼凑datagrid表格 这篇文章的话,效果是可以实现,但是经过我反复试验,还是存在一些问题的. 今天这篇文章就是向大家介绍下如何避免 ...

  5. easyui datagrid中datetime字段的显示和增删改查问题

    datagrid中datetime字段的异常显示: 使用过easyui datagrid的应该都知道,如果数据库中的字段是datetime类型,绑定在datagrid显式的时候会不正常显示,一般需要借 ...

  6. EasyUI 1.3之前DataGrid中动态选中、获取Checkbox

    这几天做项目,由于项目中用到的EasyUI版本过低,不能使用自带操作DataGrid中CheckBox的方法. 所以自己写了一个临时方案: 根据ID集合选中所属行的CheckBox: data={1, ...

  7. EasyUi DataGrid中数据编辑方式及编辑后数据获取,校验处理

    EasyUi中的DataGrid提供前台编辑的相关函数. 实现客户选中DataGrid中一列后,对选中列中的一个字段进行编辑,并对数据进行实时校验后,传递至后台保存的需求, 主要涉及到DataGrid ...

  8. Spring+SpringMVC+MyBatis+easyUI整合基础篇(六)maven整合SSM

    写在前面的话   承接前文<Spring+SpringMVC+MyBatis+easyUI整合基础篇(五)讲一下maven>,本篇所讲述的是如何使用maven与原ssm项目整合,使得一个普 ...

  9. Spring+SpringMVC+MyBatis+easyUI整合基础篇(八)mysql中文查询bug修复

    写在前面的话 在测试搜索时出现的问题,mysql通过中文查询条件搜索不出数据,但是英文和数字可以搜索到记录,中文无返回记录.本文就是写一下发现问题的过程及解决方法.此bug在第一个项目中点这里还存在, ...

随机推荐

  1. 在Delphi中使用键盘勾子获取键盘输入(译--5月7日)

    http://blog.sina.com.cn/s/blog_502b2e970100949s.html 获取键盘输入以控制无法接受输入焦点的控件考虑一些游戏,显示图片在TPainBox,但是TPai ...

  2. msgfmt: command not found

    sudo apt-get install gettext

  3. Matlab中向量场的绘制

    % quiver(x,y,u,v) % x,y是包含坐标位置的矩阵,而u和v则是包含偏导数的矩阵. % 例如绘制f(x,y)=y-3x-2x^2-3xy-3y^2的方法: % 先用gradient函数 ...

  4. 事务的实现就是利用数据库锁(行锁,表锁等),且db上锁,都是在操作之前上锁

    悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁.传统的关系型数据 ...

  5. linux 账户锁与解锁

    ,sudo passwd -l user 锁住user帐号,su 已经不能切换到user下. 2,sudo passwd -u user 解锁user帐号,su可以切换到user下. 3,如果不小心把 ...

  6. final修饰符的三种使用场景

    final有三种使用场景,各自是修饰变量.方法和类.不管哪种修饰.一旦声明为final类型.你将不能改变这个引用了,编译器会检查代码,假设你试图再次初始化,编译器会报错.以下我来详细说说每一种修饰场景 ...

  7. 利用CMD查看系统硬件信息

    利用CMD查看系统硬件信息对于在windows下查看系统信息大家一定不陌生了,我现在说几个最常用的方法,对命令感兴趣的朋友看看,(给菜鸟看的,老手就不要笑话我了,大家都是从那个时候过来的,^_^).一 ...

  8. 微信跳一跳 可以直接更改分数, POST 请求没有校验

    这两天逛 v 站出现了一众微信跳一跳 'AI',已经被刷屏了…… https://www.v2ex.com/t/418833 https://www.v2ex.com/t/418775 https:/ ...

  9. PHP Xdebug调试专题

    1.介绍与安装 Xdebug是一个PHP扩展,安装配置好后,可以自动记录运行了哪些函数,用了多少毫秒,从哪个文件运行到哪个文件等等 它记下来的调试信息很详细,对一些复杂程序跟踪调试有很大的辅助效果,能 ...

  10. Python 自用代码(知网会议论文网页源代码清洗)

    #coding=utf-8 from pymongo import MongoClient from lxml import etree import requests jigou = u" ...