JqG​​rid参数值不会改变

时间:2011-02-25 11:40:55

标签: jquery-plugins jquery jqgrid parameter-passing

我有selet列表,我将id传递给jqGrid函数,我想根据用户选择的id加载不同的数据集。 所以我将值传递给选择列表的更改事件。

RelaodGrid($(this).val());

然后我有像这样的RelaodGridfunction。

function RelaodGrid(Id) {
       jQuery("#list").jqGrid({
            url: '/Home/GridData',
            datatype: 'json',
            mtype: 'POST',
            postData:{Id:Id},
            colNames: ['Id', 'Value1', 'Value2'],
            colModel: [
          { name: 'Id', index: 'Id', width: 50, align: 'left' },
          { name: 'Value1', index: 'Value1', width: 100, align: 'left' },
          { name: 'Value2', index: 'Value2', width: 100, align: 'left'}],
            pager: jQuery('#pager'),
            viewrecords: true,
            caption: 'Summary'
        }).trigger("reloadGrid");


    };

这会重新加载网格但返回相同的值。第一次获取正确的Id值,但在每次重新加载之后,它会获取第一个选定的id值,尽管所选列表正确返回值。

如何解决这个问题?我哪里出错? 感谢。

1 个答案:

答案 0 :(得分:1)

首先,您应该只初始化一次jqGrid。一个人通过电话jQuery("#list").jqGrid({...});执行此操作。

对你的主要问题。它可以很容易地解决。您可以在the old answer中找到有关此方法的最多信息。您应该做的只是将id参数的postData属性定义为函数:

postData:{Id:function() { return $("#mySelect").val(); }

而不是postData:{Id:Id}。现在,网格将调用该函数并在每次网格重新加载时加载所选项目的当前值。你需要的只是放置

jQuery("#list").trigger("reloadGrid",[{page:1}])

在select的'change'事件处理程序中。