zoukankan      html  css  js  c++  java
  • jqgrid postData post方式累加参数,缓存了原来的数据

      今天做项目的时候发现一个问题,我们有一个筛选项,一个是VIP用户,一个是普通用户,还有一个是全部用户,首先看下我们的selection

    <select name="" id="user_type">
        <option value="">全部</option>
        <option value="1">VIP</option>
        <option value="2">普通</option>
    </select>

    非常常用的一种格式,然后我们会做一个判断

    1 var jqgrid_post_data = {};//最终向jqgrid传输的json数据
    2 if($("#user_type").val()){ //如果有值的话,给json复制
    3      jqgrid_post_data["user_type"] = $("#user_type").val();
    4 }
    5 jQuery("#table_list_1").jqGrid("clearGridData");
    6 $("#table_list_1").jqGrid('setGridParam', {  //重新请求参数
    7         postData:jqgrid_post_data ,
    8         page:this_page,
    9 }).trigger("reloadGrid");

    但是这个我们发现了一个问题,就是在我们从vip和普通用户切换到全部数据之后,查询的还是上次的数据。

      比如说我查了一次VIP的用户数据,然后我切换到了全部用户,这个时候jqgrid还是查询的VIP的用户,但是我们打印 jqgrid_post_data 的时候,这个里面是没有user_type属性的。经过查找,发现了是jqgrid缓存了参数。结果办法分为两种,一种是比较简单的,当我们选择全部用户的时候,把user_type设置为空

    1 jqgrid_post_data["user_type"] = '';

      第二种方法是看其他的博客了解到的,就是在reloadGrid之前,执行下面的函数,

    1 var postData = $('#jqGrid').jqGrid("getGridParam", "postData");
    2       $.each(postData, function (k, v) {
    3             delete postData[k];
    4 });

    就是把原来的参数清理掉,然后在重新加载一遍数据。

     这两种办法,本人都是亲测过的,都是好用的。个人觉得,第二种比较通用,大家可以把第二种方法封装成函数,然后在jqgrid获取数据的时候,先调用这个函数。清理掉原来的数据,这样比较通用,比较简单。
  • 相关阅读:
    JS 缓存
    时区转换
    JQuery easy UI 通过updateRow 排序
    SqlServer2008 数据库同步的两种方式
    C#各种辅助类收集(CSharpCommonHelper)
    Doc命令收集(一)
    Sql Server Alter语句
    JQuery easy UI updateRow
    Doc命令收集(二)
    六大开源搜索引擎工具
  • 原文地址:https://www.cnblogs.com/daniao11417/p/10727281.html
Copyright © 2011-2022 走看看