• 芯片是汽车产业发展的基石  专家呼吁建立"汽车芯片智库" 2019-06-13
  • “高深文学创作回顾研讨会”在北京举行 2019-06-13
  • 江苏专项督查基础教育问题 择校热、大班额成重点 2019-06-08
  • 14599元!索尼A7M3发布:续航翻番、支持4K视频 2019-06-08
  • 首页 春城壹网 七彩云南 一网天下 2019-05-22
  • QFII政策调整引增量资金入场 “成长+大消费”或成布局重点 2019-05-22
  • 密印“农禅”:何以在蛮荒之地举起文明火把(图) 2019-05-18
  • 20180531 袁隆平:海水稻打破纪录,杂交稻走向全球 2019-05-17
  • 晋城:八项重点打好水污染防治攻坚战 2019-05-15
  • 法国装置艺术家将一部老旧房车改造成移动游泳池 2019-05-13
  • 习近平致信祝贺人民日报创刊70周年 2019-05-10
  • 诗经讲演录:男子如何从好色转为好德? 2019-05-10
  • 中国外交部:就朝美领导人会晤发表声明 2019-05-06
  • 报道新闻记录历史 70载人民日报见证中国发展大事 2019-05-06
  • 浙江小学生北大行 梦想教育从小开始 2019-04-27
  • 欢迎访问

    云南快乐十分前三结果:云南鼎浩信息技术有限公司官方网站,云南网站建设诚信品牌!

    DING HAO COLUMN 鼎浩专栏

    鼎浩的一些分享
    Sharing from Ding Hao

    jqGrid表格应用——读取与查询数据

    来源:云南11选五走势图500期     2013年07月02日17:02
    字号:T|T

    云南11选五走势图500期 www.a-mcl.com jqGrid可以动态读取和加载外部数据,本文将结合PHP和Mysql给大家讲解如何使用jqGrid读取数据并显示,以及可以通过输入关键字查询数据的ajax交互过程。

    查看演示DEMO

    jqGrid本身带有search和edit表格???,但是这些??榛崾沟谜霾寮寤缘糜械闩哟?,而且笔者认为jqGrid的搜索查询和编辑/添加功能不好用,所以笔者放弃jqGrid自有的search和edit表格???,借助jquery利器来完成相关功能,符合项目的实际应用。

    XHTML

    编号:名称:

    我们在建立一个可供查询编号和名称的两个输入框,以及“新增”和“删除”按钮,新增和删除功能在接下来的文章中会专门讲解。此外xhtml中还有一个放置表格的#list(jqGrid生成表格)以及分页条#pager。

    Javascript

    首先调用jqGrid,我们以本站jqGrid:强大的表格插件的应用一文中的数据为例,调用jqGrid,生成表格,请看代码和注释。

    $("#list").jqGrid({
    	url:'do.php?action=list',  //请求数据的url地址
    	datatype: "json",  //请求的数据类型
       	colNames:['编号','名称','主屏尺寸','操作系统','电池容量', '价格(¥)','操作'], //数据列名称(数组)
       	colModel:[ //数据列各参数信息设置
       		{name:'sn',index:'sn', editable:true, width:80,align:'center', title:false},
       		{name:'title',index:'title', width:180, title:false},
       		{name:'size',index:'size', width:120},
    		{name:'os',index:'os', width:120},
       		{name:'charge',index:'charge', width:100,align:'center'},
    		{name:'price',index:'price', width:80,align:'center'},
       		{name:'opt',index:'opt', width:80, sortable:false, align:'center'}		
       	],
       	rowNum:10, //每页显示记录数
       	rowList:[10,20,30], //分页选项,可以下拉选择每页显示记录数
       	pager: '#pager',  //表格数据关联的分页条,html元素
    	autowidth: true, //自动匹配宽度
    	height:275,   //设置高度
    	gridview:true, //加速显示
        viewrecords: true,  //显示总记录数
    	multiselect: true,  //可多选,出现多选框
    	multiselectWidth: 25, //设置多选列宽度
    	sortable:true,  //可以排序
    	sortname: 'id',  //排序字段名
        sortorder: "desc", //排序方式:倒序,本例中设置默认按id倒序排序
    	loadComplete:function(data){ //完成服务器请求后,回调函数
    		if(data.records==0){ //如果没有记录返回,追加提示信息,删除按钮不可用
    			$("p").appendTo($("#list")).addClass("nodata").html('找不到相关数据!');
    			$("#del_btn").attr("disabled",true);
    		}else{ //否则,删除提示,删除按钮可用
    			$("p.nodata").remove();
    			$("#del_btn").removeAttr("disabled");
    		}
    	}
    });

    关于jqGrid相关选项设置请参照:jqGrid中文说明文档——选项设置。

    此外,当我们点击“查询”按钮的时候,向后台php程序发送查询关键字请求,jqGrid根据服务端返回的结果进行响应,请看代码。

    $(function(){
        $("#find_btn").click(function(){
    		var title = escape($("#title").val());
    	    var sn = escape($("#sn").val());
    	    $("#list").jqGrid('setGridParam',{
    			url:"do.php?action=list",
    			postData:{'title':title,'sn':sn}, //发送数据
    			page:1
    		}).trigger("reloadGrid"); //重新载入
    	});
    });

    PHP

    在上两段JS代码代码中,可以看到读取列表和查询业务请求的后台url地址都是do.php?action=list,后台php代码负责根据条件查询mysql数据表中的数据,并将数据以JSON格式返回给前端jqGrid,请看php代码:

    include_once ("connect.php");
    $action = $_GET['action'];
    switch ($action) {
    	case 'list' : //列表
    		$page = $_GET['page'];  //获取请求的页数
    		$limit = $_GET['rows']; //获取每页显示记录数
    		$sidx = $_GET['sidx'];  //获取默认排序字段
    		$sord = $_GET['sord'];  //获取排序方式
    		if (!$sidx)
    			$sidx = 1;
    
            $where = '';
            $title = uniDecode($_GET['title'],'utf-8'); //获取查询关键字:名称
            if(!empty($title))
                $where .= " and title like '%".$title."%'";
            $sn = uniDecode($_GET['sn'],'utf-8'); //获取查询关键字:编号
            if(!empty($sn))
                $where .= " and sn='$sn'";
            //执行SQL
    		$result = mysql_query("SELECT COUNT(*) AS count FROM products where deleted=0".$where);
    		$row = mysql_fetch_array($result, MYSQL_ASSOC);
    		$count = $row['count']; //获取总记录数
            //根据记录数分页
    		if ($count > 0) {
    			$total_pages = ceil($count / $limit);
    		} else {
    			$total_pages = 0;
    		}
    		if ($page > $total_pages)
    			$page = $total_pages;
    		$start = $limit * $page - $limit;
    		if ($start < 0 ) $start = 0;
            //执行分页SQL
    		$SQL = "SELECT * FROM products WHERE deleted=0".$where." ORDER BY $sidx $sord 
            LIMIT $start , $limit";
    		$result = mysql_query($SQL) or die("Couldn t execute query." . mysql_error());
    		$responce->page = $page;  //当前页
    		$responce->total = $total_pages; //总页数
    		$responce->records = $count; //总记录数
    		$i = 0;
            //循环读取数据
    		while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    			$responce->rows[$i]['id'] = $row[id];
    			$opt = "修改";
    			$responce->rows[$i]['cell'] = array (
    				$row['sn'],
    				$row['title'],
    				$row['size'],
    				$row['os'],
    				$row['charge'],
    				$row['price'],
    				$opt
    			);
    			$i++;
    		}
    		echo json_encode($responce);  //输出JSON数据
    		break;
    	case '' :
    		echo 'Bad request.';
    		break;
    }

    值得一提的是,我们在进行中文查询时,即输入中文关键字进行查询时,需要用js进行escape编码,然后php接收中文关键字时相应的进行解码,否则会出现无法识别中文字符串的现象,本例中采用uniDecode函数进行解码,代码一并奉上:

    /处理接收jqGrid提交查询的中文字符串
    function uniDecode($str, $charcode) {
    	$text = preg_replace_callback("/%u[0-9A-Za-z]{4}/", toUtf8, $str);
    	return mb_convert_encoding($text, $charcode, 'utf-8');
    }
    function toUtf8($ar) {
    	foreach ($ar as $val) {
    		$val = intval(substr($val, 2), 16);
    		if ($val < 0x7F) { // 0000-007F
    			$c .= chr($val);
    		}
    		elseif ($val < 0x800) { // 0080-0800
    			$c .= chr(0xC0 | ($val / 64));
    			$c .= chr(0x80 | ($val % 64));
    		} else { // 0800-FFFF
    			$c .= chr(0xE0 | (($val / 64) / 64));
    			$c .= chr(0x80 | (($val / 64) % 64));
    			$c .= chr(0x80 | ($val % 64));
    		}
    	}
    	return $c;
    }

    最后,感谢您对helloweba的关注,我们将在后面的文章继续讲解jqGrid的增删改等应用,敬请期待。

    客服中心
    点击进行在线咨询

    QQ咨询 咨询QQ:79929313 咨询QQ:88139574 咨询QQ:122790803

    咨询热线:0871-63399840

    客服热线:0871-63523332

    客服中心 客服中心
  • 芯片是汽车产业发展的基石  专家呼吁建立"汽车芯片智库" 2019-06-13
  • “高深文学创作回顾研讨会”在北京举行 2019-06-13
  • 江苏专项督查基础教育问题 择校热、大班额成重点 2019-06-08
  • 14599元!索尼A7M3发布:续航翻番、支持4K视频 2019-06-08
  • 首页 春城壹网 七彩云南 一网天下 2019-05-22
  • QFII政策调整引增量资金入场 “成长+大消费”或成布局重点 2019-05-22
  • 密印“农禅”:何以在蛮荒之地举起文明火把(图) 2019-05-18
  • 20180531 袁隆平:海水稻打破纪录,杂交稻走向全球 2019-05-17
  • 晋城:八项重点打好水污染防治攻坚战 2019-05-15
  • 法国装置艺术家将一部老旧房车改造成移动游泳池 2019-05-13
  • 习近平致信祝贺人民日报创刊70周年 2019-05-10
  • 诗经讲演录:男子如何从好色转为好德? 2019-05-10
  • 中国外交部:就朝美领导人会晤发表声明 2019-05-06
  • 报道新闻记录历史 70载人民日报见证中国发展大事 2019-05-06
  • 浙江小学生北大行 梦想教育从小开始 2019-04-27
  • 湖北十一选五预测 广东11选5复式投注表价格 浙江十一选五基本走势图文库 电视彩票走势图 羽毛球直播比赛 88娱乐城快乐赛车 p3开机号试机号开奖号码走势图 355555彩虹心水论坛 山西快乐十分开奖记录 2019最新六合图库资料 新浪彩票北京单场合买划算吗 14场胜负彩计算 吉林快三助赢网页版 湖北11选5的玩法奖级 浙江20选5走试图