系统在使用jqGrid时,如果某些页面的查询项是复选框,后台是数组接收的,就会出现传值不正确问题。

1、项目中某查询页面存在的复选框:待处理S1,正在处理S2,已处理S3;

使用jqGrid提交查询数据方法如下:

$("#xxTable").setGridParam({

  datatype : "json",
  postData: {
    "id" : $("#id").val(),
    "nodeStatus" : checkBoxValues("nodeStatus")
   }
  }).trigger("reloadGrid", [{ page: 1}]);

2、该问题调查如下:

  第一次传值:id传123456,勾选待处理

postData: id:123456  , nodeStatus : [S0]
       第二次传值:id传1234567,勾选正在处理
       postData:id :1234567 , nodeStatus : [S1]
       第三次传值:勾选待处理、正在处理
       postData:nodeStatus : [S0, S1]
       第四次传值:勾选待处理、已处理
       postData:nodeStatus : [S0, S2]
       第五次传值:勾选待处理、正在处理、已处理
       postData:nodeStatus : [S0, S1, S2]
       第六次传值:勾选正在处理、已处理
       postData:nodeStatus : [S1, S2, S2]
       第七次传值:勾选待处理、已处理
       postData:nodeStatus : [S0, S2, S2]
       第八次传值:勾选已处理
       postData:nodeStatus : [S2, S2, S2]

  不难发现,它会启用上次提交的历史数据,并将本次提交的数据对应替换,如果是单个值还好,如果是数组那么就会出现问题。  

3、解决该问题方式:

  A、在jqGrid内使用serializeGridData 事件,此事件返回一个要传到后台的序列化数据,这里进行重新赋值后返回发到后台:

              serializeGridData : function (postData)
              {
                postData.nodeStatus=checkBoxValues("nodeStatus");
                return JSON.stringify(postData);
              },
   此方法有一个弊端,就是不能一劳永逸,如果后期查询页面又新增了一个复选框查询项,那么记得一定要在此处重新赋值。

  B、简单粗暴的方法,每次请求前都将历史数据清除掉:

    var postData = $("#xxTable").jqGrid("getGridParam", "postData");

    $.each(postData, function (k, v) {

      delete postData[k];  
    }); 
    此方法可以提炼为一个公共方法使用。

jqGrid以setGridParam方式postData,包含历史数据的问题的更多相关文章

  1. Java Array数组 遍历 四种方式(包含 Lambda 表达式遍历)

    示例代码如下: package com.miracle.luna.lambda; import java.util.Arrays; /** * @Author Miracle Luna * @Date ...

  2. Java List集合 遍历 四种方式(包含 Lambda 表达式遍历)

    示例代码如下: package com.miracle.luna.lambda; import java.util.ArrayList; import java.util.List; /** * @A ...

  3. Java Map集合 遍历 五种方式(包含 Lambda 表达式遍历)

    示例代码如下: package com.miracle.luna.lambda; import java.util.HashMap; import java.util.Iterator; import ...

  4. java web项目启动进入首页的配置方式(包含过滤跳转首页实现)

    本文为博主原创,未经允许不得转载: 项目启动成功,进入首页的方式,我们往往在web.xml 中通过以下的方式默认进入跳转首页, <welcome-file-list> <welcom ...

  5. App自动化之dom结构和元素定位方式(包含滑动列表定位)

    900×383 38 KB 先来看几个名词和解释: dom: Document Object Model 文档对象模型 dom应用: 最早应用于html和js的交互.界面的结构化描述, 常见的格式为h ...

  6. dagger2系列之依赖方式dependencies、包含方式(从属方式)SubComponent

    本篇是实战文章,从代码的角度分析这两种方式.本文参考自下列文章: http://www.jianshu.com/p/1d42d2e6f4a5 http://www.jianshu.com/p/94d4 ...

  7. JQuery插件之【jqGrid】常用语法整理

    jqGrid常用语法整理,包含数据获取.常用函数.触发事件等 jqGrid表格数据获取相关语法 获取表格所有数据 $("#grid").jqGrid("getRowDat ...

  8. jqGrid行编辑配置,方法,事件

    行编辑可以在行修改后更新数据,如下图所示 用户用鼠标点击选择一行,jqGrid将可编辑的字段转换为数据输入单元,如上面图所示.不可编辑的列,如id,不会转为可输入单元,而是保持不变.可以通过配置col ...

  9. 使用post方式提交表单如何获取图片数据及其他文本参数[NodeJS]

    当POST方式提交包含图片的表单时,如上传图片时,需要在<form>字段需要添加参数enctype="multipart/form-data",表明以二进制方式传输数据 ...

随机推荐

  1. 【React】 npm 常用的插件

    npm install –save-dev    package.json   安装环境 https://segmentfault.com/a/1190000008489881  全局 https:/ ...

  2. BoundsChecker下载

    首先,单独的BoundsChecker已经没了,被收购了,整合进了DevPartner 其次,DevPartner是收费软件,属于Borland的.官方地址:http://www.borland.co ...

  3. H3C RIP协议概述

  4. P1068 压缩技术

    题目描述 设某汉字由N × N的0和1的点阵图案组成. 我们依照以下规则生成压缩码.连续一组数值:从汉字点阵图案的第一行第一个符号开始计算,按书写顺序从左到右,由上至下.第一个数表示连续有几个0,第二 ...

  5. VUE框架思想

    学习VUE的第一步就是先了解这个框架的的核心思想 Vue.js的核心思想就是,它是一套__渐进式的自底层向上增量开发__的__MVVM__结构的框架 什么是框架? 简单的讲,框架就是将与业务无关的重复 ...

  6. ZOJ——String Successor(字符串模拟题目)

    ZOJ Problem Set - 3490 String Successor Time Limit: 2 Seconds      Memory Limit: 65536 KB The succes ...

  7. AndroidStudio手动安装插件

    由于网络原因,android studio 的插件市场经常不能打开或者不能下载,这种情况我们可以手动下载插件的压缩包,再手动安装. 第一步,打开https://plugins.jetbrains.co ...

  8. Struts2 控件标签

    Struts 2 的标签有一组标签,更容易控制流程页面执行.以下是重要的Struts2控制标签列表: if /else 标签: 这些标签执行可在每一种语言找到的一种基本条件流程. 'If'标签可用于本 ...

  9. python OrderedDict

    15年16年接触python时候,还不知道这个函数,只知道dict的无序,造成了一些麻烦 今天view 代码,发现了 OrderedDict() 在python2.7中比较吃内存 pop(获取指定ke ...

  10. 王雅超的学习笔记-大数据hadoop集群部署(十)

    Spark集群安装部署