iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Jquery如何使用JQgrid组件处理json数据
  • 566
分享到

Jquery如何使用JQgrid组件处理json数据

2023-06-30 18:06:30 566人浏览 独家记忆
摘要

这篇“Jquery如何使用JQgrid组件处理JSON数据”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Jquery如何使用

这篇“Jquery如何使用JQgrid组件处理JSON数据”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Jquery如何使用JQgrid组件处理json数据”文章吧。

jqGrid是Trirand软件开发公司的Tony Tomov开发的一个方便人们开发使用的WEB组件,它包含了许多免费和开源的库如:jQuery, ThemeRoller, & jQuery UI等 ,同时最新的版本已经支持bootstrapUI,Tony最初的时候是因为他需要一种方式来表示数据库信息,这种方式有速度上的要求同时还要独立于服务器端技术和后台数据库,于是jqGrid诞生了,从最初的版本到现在已经升级到了Guriddo jqGrid 5.4 ,之前的各个版本都是在不断的修复bug以及添加符合需求的新功能。jqGrid越来越趋于完善。

jqGrid 是一个用来显示网格数据的jQuery插件,通过使用jqGrid可以轻松实现前端页面与后台数据的ajax异步通信。

Jquery如何使用JQgrid组件处理json数据

一、jqGrid特性

  • 基于jquery UI主题,开发者可以根据客户要求更换不同的主题。

  • 兼容目前所有流行的web浏览器。

  • Ajax分页,可以控制每页显示的记录数。

  • 支持XML,JSON,数组形式的数据源。

  • 提供丰富的选项配置及方法事件接口。

  • 支持表格排序,支持拖动列、隐藏列。

  • 支持滚动加载数据。

  • 支持实时编辑保存数据内容。

  • 支持子表格及树形表格。

  • 支持多语言。

  • 目前是免费的。

二、调用ajax的事件顺序如下:

  • beforeRequest

  • loadBeforeSend

  • serializeGridData--从第4项开始为返回数据过程的事件

  • loadError (if a error from the request occur - the event from steps 5 till 7 do not execute. If there is no error the event 4. does not execute and we continue to with the step 5.)

  • beforeProcessing

  • gridComplete

  • loadComplete

三、JQgrid处理json数据

1、定义Jqgrid

$("#tableOEE").jqGrid({    data: [],    datatype: "json",    rownumbers: true, //显示行号    loadonce:true,//在加载完成后,datatype自动变成local    autowidth: true,    pager: "#pager",    viewrecords: true,//是否显示总记录数    rowNum: 300,//表格中显示的记录数    rowList: [10, 20, 30],    height: '100%',    gridview: true,//整个表格都构造完成后再添加到grid中。    jsonReader:{repeatitems:false,id:"2"},//2表示id为rowData的第三个元素。    beforeProcessing:function(res,status,errror){        $.each(res.rows,function(i,n){//在来自Sever的数据Grid处理之前,格式化返回的JSON数据            n.time=Number(n.time).toExponential(3);            n.shift=["早","中","晚"][n.shift];        });    },    loadComplete:function(xhr){//Grid加载完成后,可对Grid中的元素绑定事件了。分组完成。         $("td.tdQty").bind("click", {}, getDcData);         var rowCount=$(this).getGridParam("records");    },    colModel: [{ name: 'line', index: 'line', width: 80, align: 'center', label: '产线', key:true,editable:true },//排序sidx                { name: 'shift', index: 'shift', width: 80, align: 'center', label: '班次' },                { name: 'remark_avai', index: 'remark_avai', label: '备注', hidden: true },                { name: 'qty_dot', index: 'qty_dot', align: 'right', classes: 'linkbyPop tdQty', label: '总点数', fORMatter: NumFmatter },       //formatter 格式化字段,unformat:反格式化。                ]});jQuery("#tableOEE").jqGrid('navGrid', '#pager', { edit: false, add: false, del: false, search: true, refresh: true }, {}, //编辑edit参数{}, //添加add参数{}, //删除del参数{ multipleSearch: true },//搜索search参数{closOnEscape:true}//查看view参数);jQuery("#tableOEE").jqGrid('setGroupHeaders', {//表头分组   useColSpanStyle: true,   groupHeaders: [     { startColumnName: 'time_avai', numberOfColumns: 1, titleText: '<em>A</em>' },     { startColumnName: 'qty_dot', numberOfColumns: 3, titleText: '<em>F</em>' }]});

2、重新加载数据

$("#tableOEE").jqGrid("clearGridData", true);$("#tableOEE").jqGrid("setGridParam", { data: {...} });//或者$("#tableOEE").setGridParam({ datatype: "json",url: "ajax/Punch.ashx",postData:"line=aa&lot=''"});$("#tableOEE").trigger("reloadGrid");

3、后台处理

var GridJson=new { total="10",page="1",rows=oeeList,records=oeeList.Count.ToString()};returnStr=new javascriptSerialzer().Serilize(gridJson);

4、返回JSON格式:

当repeatitems:false时,名称要与colModel中的名字一致 。

{"total":"10","page":"1","rows"=[{"line":"A1","Shift":3,"qty":123,"time":0.02}],"records":"4"} //records为查询出的总记录数,并非本页记录数。

如果repeatitems:true(默认)

{"total":"10","page":"1","rows":[{id:"1",cell:["cell1","cell2"]},{id:"2",cell:["cell3","cell4"]}],"records":"4"}

对数字进行千分符分割:

function getNumberSpliter(num) {    if (num != '' && !isNaN(num)) {        re = /(\d{1,3})(?=(\d{3})+(?:$|\.))/g;        n = String(num).replace(re, "$1,");        return n;    }    else return num;}

四、JQgrid处理Local数据

$("#tableOEE").jqGrid({        data: [],        datatype: "local",        ...});  //获得服务器数据$.ajax({    type: "GET",    cache: false,    url: "ajax/Punch.ashx",    data: i,    success: function (res) {        if (res.indexOf("SERVER_ERROR") == -1) {            res = $.parseJSON(res);            $.each(res, function (i, n) {                this.shift = Shift[this.shift];                this.time_perdot = Number(this.time_perdot).toExponential(3);            });            $("#tableOEE").jqGrid("clearGridData", true);            $("#tableOEE").jqGrid("setGridParam", { data: res });            $("#tableOEE").trigger("reloadGrid");            $("td.tdQty").bind("click", {}, getDcData);//绑定grid中元素事件        }        else {            alert(res.replace("SERVER_ERROR", "错误"));        }        $.unblockUI();    },    error: function (XMLHttpRequest, textStatus, errorThrown) {        alert(textStatus + errorThrown);    }});

五、JQgrid分组与行选择

$("#tableOEE").jqGrid({        grouping: true,        groupingView: { groupField: ['BoxId'] },//分组        multiselect: true,        autowidth: true,        //...        colModel: [                        { name: 'Serial', index: 'Serial', align: 'center', label: '序列号' },                        { name: 'BoxId', index: 'BoxId', align: 'center', label: '箱号' },                        { name: 'progress_recid', key: true, index: 'progress_recid', width: 80, align: 'center', label: '内部号' }/                        //key: true主键,服务器返回的数据没有ID时,将此作为rowid使用。                        ],        onSelectRow: selectRow});    var parentWidth = $("#DIV_Body").CSS("width").replace("px", "");$("#tableOEE").jqGrid("setGridWidth", parentWidth);function selectRow(rowid, status, e) {    if (status) {        if ($("#tableOEE").getRowData(rowid).PalLocation != "在货仓") {            $("#tableOEE").setSelection(rowid, false);//取消选择            alert("在货仓状态的卡板,只能由SIS人员操作");        }        var selRows = $("#tableOEE").getGridParam('selarrrow');//'selrow'最后选择行的主键        if (selRows.length > 2) {            $("#tableOEE").setSelection(rowid, false);                    alert("只能选择两个序列号更换");        }    }}

六、 JQgrid构建查询

Jquery如何使用JQgrid组件处理json数据

1、定义Jqgrid

ajax远端请求分页,排序,手工构建搜索参数,进行服务端查询,以及CURD操作。

$(function () {    $("#grid").jqGrid({        url: "/PushPDA/GetTodoLists",        datatype: 'json',        mtype: 'Get',        colNames: ['操作', 'ID', 'IP', '所属人', '生产线', '状态', '类型', '更新日期', '更新时间'],        colModel: [            { name: 'act', index: 'act', align: 'center', width: 80, search: false, sortable: false, editable: false },            { hidden: true, align: 'center', name: 'ID', index: 'ID', editable: true, key: true },            { name: 'IP', align: 'center', index: 'IP', editable: true },            { name: 'Owner', align: 'center', index: 'Owner', editable: true },            { name: 'Line', align: 'center', index: 'Line', editable: true },            { name: 'Status', align: 'center', index: 'Status', editable: true, },            { name: 'Type', align: 'center', index: 'Type', editable: true, edittype: 'select', formatter: 'select', editoptions: { value: { 'CASE': '套料', 'BIG': '中大件料' } } },            { name: 'UpdateDate', align: 'center', index: 'UpdateDate', editable: false },            { name: 'UpdateTime', align: 'center', index: 'UpdateTime', editable: false }        ],        pager: jQuery('#pager'),        rowNum: 100,        rowList: [10, 20, 30, 40],        height: '100%',        viewrecords: true,        emptyrecords: 'No records to display',        jsonReader: {            root: "rows",            page: "page",            total: "total",            records: "records",            repeatitems: false,            Id: "0"        },        autowidth: true,        multiselect: false,        beforeProcessing: function (res) {//格式化返回数据            if (!res)                return;            //$.each(res.rows, function (i, n) {            //    n.UpdateDate = DatefromJSON(n.UpdateDate);            //    n.UpdateTime = secondToTimeString(n.UpdateTime);            //});        },        gridComplete: function () {            var ids = $("#grid").getDataIDs();//jqGrid('getDataIDs');            for (var i = 0; i < ids.length; i++) {                var cl = ids[i];                be = "<input style='height:22px;width:40px;' type='button' value='编辑' onclick=\"jQuery('#grid').jqGrid('editGridRow','" + cl + "',{url: '/PushPDA/Edit',checkOnSubmit:true,checkOnUpdate:true,closeAfterEdit:true,closeOnEscape:true});\"  />";                de = "<input style='height:22px;width:40px;' type='button' value='删除' onclick=\"jQuery('#grid').jqGrid('delGridRow','" + cl + "',{ url: '/PushPDA/Delete', closeOnEscape:true});\"  />";                jQuery("#grid").jqGrid('setRowData', ids[i], { act: be + de });            }        },    }).navGrid('#pager', { edit: true, add: true, del: true, search: false, refresh: true },        {            // edit options            zIndex: 100,            url: '/PushPDA/Edit',            closeOnEscape: true,            closeAfterEdit: true,            recreateForm: true,            afterComplete: function (response) {                if (response.responseText) {                    alert(response.responseText);                }            }        },        {            // add options            zIndex: 100,            url: "/PushPDA/Create",            closeOnEscape: true,            closeAfterAdd: true,            afterComplete: function (response) {                if (response.responseText) {                    alert(response.responseText);                }            }        },        {            // delete options            zIndex: 100,            url: "/PushPDA/Delete",            closeOnEscape: true,            closeAfterDelete: true,            recreateForm: true,            msg: "Are you sure you want to delete this task?",            afterComplete: function (response) {                if (response.responseText) {                    alert(response.responseText);                }            }        });    new_search();});//将整数秒格式转成时间格式。function secondToTimeString(seconds) {    if (seconds == null) return "";    var hh = parseInt(seconds / 3600).toString();    seconds -= hh * 3600;    var mm = Math.round(seconds / 60).toString();    if (hh.length == 1) {        hh = "0" + hh;    }    if (mm.length == 1) {        mm = "0" + mm;    }    return hh + ":" + mm;}//解析JOSN返回的日期字符串格式。function DatefromJSON(jsonstr) {    // return eval (jsonstr.replace(new RegExp('/Date\\((-?[0-9]+)\\)/','g'),'new Date($1)')).toLocalDateString();    if (jsonstr == null) return "";    d = eval('new ' + (jsonstr.replace(/\//g, '')));    var month = (d.getMonth() + 1);    month = ("00" + month).substr(("" + month).length);    var day = d.getDate()    day = ("00" + day).substr(("" + day).length);    return d.getFullYear() + "-" + month + "-" + day;}

2、手工构建查询参数

(1)单字段搜索:

主要构建的查询参数为searchField,searchString,searchOper

var searchPara = {   // 构建查询需要的参数        searchField: "Line",        searchString: strLines,        searchOper: "in"    };// 获得当前postData选项的值var postData = $("#grid").jqGrid("getGridParam", "postData");// 将查询参数融入postData选项对象    $.extend(postData, searchPara);    $("#grid").jqGrid("setGridParam", {        url: "/PushPDA/GetTodoLists",        search: true    //将jqGrid的search选项设为true    }).trigger("reloadGrid", [{ page: 1 }]);   // 重新载入Grid表格,以使上述设置生效
(2)多字段搜索

主要构建的查询参数为groupOp,rules,filed,op,data.

var rules = "";// 构建查询需要的参数var searchField = "Line";var searchString = strLines;var searchOper = "in";if (searchField && searchOper && searchString) { //如果三者皆有值且长度大于0,则将查询条件加入rules字符串        rules += ',{"field":"' + searchField + '","op":"' + searchOper + '","data":"' + searchString + '"}';    }if (strDate1) {         rules += ',{"field":" IP","op":"eq","data":"' + strDate1 + '"}';    }if (rules) { //如果rules不为空,且长度大于0,则去掉开头的逗号        rules = rules.substring(1);    }//串联好filtersStr字符串var filtersStr = '{"groupOp":"AND","rules":[' + rules + ']}';// 获得当前postData选项的值var postData = $("#grid").jqGrid("getGridParam", "postData");// 将查询参数融入postData选项对象    $.extend(postData, { filters: filtersStr });    $("#grid").jqGrid("setGridParam", {        url: "/PushPDA/GetTodoLists",        search: true    // 将jqGrid的search选项设为true    }).trigger("reloadGrid", [{ page: 1 }]);   // (7)重新载入Grid表格,以使上述设置生效

3、后台根据查询条件返回查询结果

注意使用Linq语句,以及动态Linq查询。

public JsonResult GetTodoLists(string sidx, string sord, int page, int rows, bool _search, string searchField, string searchString, string searchOper, string filters)  //Gets the todo Lists.{    IQueryable<PushPdaInfo> pdas = db.PushPDAs;    IQueryable<PushPdaInfo> todoListsResults = null;    //搜索    if (_search)    {        if (!string.IsNullOrEmpty(searchField))//单字段搜索        {            todoListsResults = pdas.Where(p => searchString.IndexOf(p.Line) > -1);        }        else if (!string.IsNullOrEmpty(filters))//多字段搜索        {            JObject ofilters = JObject.Parse(filters);            string searchField1;            string searchString1;            string sql;            for (int i = 0; i < ofilters["rules"].Count(); i++)            {                searchField1 = ofilters["rules"][i]["field"].ToString();                searchString1 = ofilters["rules"][i]["data"].ToString();                sql = "\"" + searchString1 + "\".Contains(" + searchField1 + ")";                todoListsResults = pdas.Where(sql);            }        }    }    else    {        return Json(new { }, JsonRequestBehavior.AllowGet);    }    //排序    if (string.IsNullOrEmpty(sidx)) sidx = "IP";    todoListsResults = todoListsResults.OrderBy(sidx + " " + sord);    //分页    int pageIndex = Convert.ToInt32(page) - 1;    int pageSize = rows;    int totalRecords = pdas.Count();    var totalPages = (int)Math.Ceiling((float)totalRecords / (float)rows);    todoListsResults = todoListsResults.Skip(pageIndex * pageSize).Take(pageSize);    var todoListsResults1 = from p in todoListsResults.ToList()                            select new                            {                                p.ID,                                p.IP,                                p.Owner,                                p.Line,                                p.Status,                                p.Type,                                UpdateDate = p.UpdateDate.HasValue ? p.UpdateDate.GetValueOrDefault().ToShortDateString() : "",                                UpdateTime = p.UpdateTime.HasValue ? IntTimeToStringTime(p.UpdateTime.GetValueOrDefault()) : ""                            };    var jsonData = new    {        total = totalPages,        page,        records = totalRecords,        rows = todoListsResults1    };    return Json(jsonData, JsonRequestBehavior.AllowGet);}

4、定义html

<div id="search_container" title="Search Options">    <div id="boxbody">        <fieldset>            <legend>Query IP<span id="spanClearDates">[Clear]</span></legend>            <table>                <tr>                    <td><strong>扫描枪IP: </strong>                        <input id="Text_Date1" type="text" />                    </td>                </tr>            </table>        </fieldset>    </div></div><div>    <table id="grid"></table>    <div id="pager"></div></div>

以上就是关于“Jquery如何使用JQgrid组件处理json数据”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: Jquery如何使用JQgrid组件处理json数据

本文链接: https://www.lsjlt.com/news/330668.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Jquery如何使用JQgrid组件处理json数据
    这篇“Jquery如何使用JQgrid组件处理json数据”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Jquery如何使用...
    99+
    2023-06-30
  • Jquery使用JQgrid组件处理json数据
    目录一、jqGrid特性二、调用ajax的事件顺序如下:三、JQgrid处理json数据1、定义Jqgrid2、重新加载数据3、后台处理4、返回JSON格式:四、JQgrid处理Lo...
    99+
    2024-04-02
  • 如何使用 PHP 函数处理 JSON 数据?
    php 提供了以下函数来处理 json 数据:解析 json 数据:使用 json_decode() 将 json 字符串转换为 php 数组。创建 json 数据:使用 json_en...
    99+
    2024-05-04
    php json 键值对
  • 如何使用jquery动态刷新json数据
    这篇文章将为大家详细讲解有关如何使用jquery动态刷新json数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。有个功能:web上需要定时刷新后台数据解决方案:数据通过...
    99+
    2024-04-02
  • easyui如何处理json数据
    EasyUI提供了一些简单的方法来处理JSON数据。下面是一些处理JSON数据的常用方法: 将JSON字符串转换为JSON对象:...
    99+
    2023-10-23
    easyui json
  • jquery如何将json转换为数组
    使用jquery将json转换为数组的方法:1.新建html项目,引入jquery;2.使用var关键字定义json字符串,并赋值;3.使用parseJSON()方法将json字符串转换为json对象;4.通过for循环遍历json对象,将...
    99+
    2024-04-02
  • jQuery封装的ajax如何对JSON数据进行请求处理
    小编给大家分享一下jQuery封装的ajax如何对JSON数据进行请求处理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体实现...
    99+
    2024-04-02
  • Python如何处理JSON数据详解
    目录什么是JSON?JSON作用为什么使用JSONJSON的使用最后什么是JSON? JSON是一种轻量级的数据交互格式,采用完全独立于编程语言的文本格式来存储和表示数据。和xml相...
    99+
    2024-04-02
  • java+jquery如何处理xml数据
    这篇文章主要讲解了“java+jquery如何处理xml数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java+jquery如何处理xml数据”吧! AjaxJqueryXml.js如下...
    99+
    2023-06-08
  • PHP 中如何使用数组进行数据处理?
    PHP是一种广泛应用于Web开发的脚本语言。在PHP中,数组是一种非常重要的数据结构,用于存储和处理大量数据。数组提供了一种方便的方式来组织和访问数据,使得数据处理变得更加容易和高效。在本文中,我们将介绍PHP中如何使用数组进行数据处理,希...
    99+
    2023-10-24
    数组 unix numpy
  • 怎么使用Spring Boot处理JSON数据
    这篇文章主要介绍“怎么使用Spring Boot处理JSON数据”,在日常操作中,相信很多人在怎么使用Spring Boot处理JSON数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用Spring ...
    99+
    2023-06-02
  • 如何使用jQuery定义和管理数组
    在前端开发中,我们经常需要处理一些数组数据,比如存储一些选项、表单数据、甚至是API返回的数据。定义一个数组可以帮助我们更好地管理这些数据。本文将介绍如何使用jQuery定义和管理数组。定义数组定义一个空数组很简单,只需要使用以下代码:va...
    99+
    2023-05-14
  • 如何使用Java数组处理实时接口数据?
    在现代软件开发中,实时接口数据处理已经成为了一个非常重要的部分。而在Java开发中,数组是处理数据的重要工具之一。因此,在本文中,我们将讨论如何使用Java数组处理实时接口数据。 一、什么是实时接口数据? 实时接口数据是指从外部设备或系统...
    99+
    2023-06-06
    实时 接口 数组
  • MariaDB中如何处理JSON数据类型
    在MariaDB中,JSON数据类型可以用来存储和查询JSON格式的数据。要处理JSON数据类型,可以使用各种函数和操作符来操作JS...
    99+
    2024-04-09
    MariaDB
  • python如何处理json文件
    在Python中,可以使用`json`模块来处理JSON文件。具体步骤如下:1. 导入`json`模块:`import json`2...
    99+
    2023-09-22
    python json
  • Java中如何使用Apache库处理数组数据类型?
    Apache是一个非常流行的开源软件基金会,提供了许多优秀的库和工具来处理各种数据类型。在Java中,我们可以使用Apache库来处理数组数据类型。在本文中,我们将介绍如何使用Apache库来处理数组数据类型,并提供一些示例代码。 一、A...
    99+
    2023-11-03
    数据类型 数组 apache
  • Unix环境下如何使用数组进行数据处理?
    Unix环境是一个强大的操作系统平台,它提供了很多工具和命令来方便我们进行数据处理。其中,数组是一个非常有用的数据结构,可以帮助我们更快速地处理数据。在本文中,我们将介绍如何在Unix环境下使用数组进行数据处理。 一、什么是数组? 数组是...
    99+
    2023-07-20
    unix 自然语言处理 数组
  • 如何在 Python 中使用算法处理数组文件?
    Python 是一种功能强大的编程语言,它提供了许多用于处理数组文件的算法。在本文中,我们将介绍如何使用 Python 中的算法处理数组文件。 一、Python 中的数组 在 Python 中,数组是一种数据结构,它可以存储一系列相同类型的...
    99+
    2023-11-03
    数组 文件 编程算法
  • PHP中如何使用数组处理函数
    这篇文章将为大家详细讲解有关PHP中如何使用数组处理函数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。PHP数组处理函数array: 建立一个新的数组。array_walk: 让用户自订函数...
    99+
    2023-06-17
  • 使用ajax怎么处理返回的json数据
    本篇文章给大家分享的是有关使用ajax怎么处理返回的json数据,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。以用户注册为例:register.php<html>&...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作