【问题标题】:How to change the filter selection in jqGrid如何更改 jqGrid 中的过滤器选择
【发布时间】:2012-11-19 01:33:52
【问题描述】:

我正在使用以下关于 jsbin 的示例(代码修改自 @oleg 的示例)

http://jsbin.com/owitod/18/edit

我有一个 jquery-ui 对话框,其中显示了一个下拉框,该框模仿其中一列的过滤器下拉框和一个按钮。单击按钮时,警报对话框会显示当前的 jqGrid 过滤器。但是,当我在对话框内的下拉菜单中更改下拉选择时,我希望 jqGrid 过滤器也可以更改。

以上演示示例:

  1. 选择运动类别
  2. 点击显示对话框
  3. 注意运动已预先选择
  4. 点击显示过滤器并注意:

    {"groupOp":"AND","rules":[{"field":"Category","op":"eq","data":"sport"}]}

  5. 将对话框中的下拉菜单更改为科学

  6. 此时,当我单击显示过滤器时,我希望收到以下警报

    {"groupOp":"AND","rules":[{"field":"Category","op":"eq","data":"science"}]}

我在代码中尝试了以下方法,但它不起作用:

$("#gs_Category").val($("#mycat").val());  //this doesn't work...

alert(jQuery("#list").jqGrid('getGridParam', 'postData').filters);

【问题讨论】:

  • 您的 jsbin 示例抛出错误,无法加载。

标签: javascript jquery jquery-ui jqgrid


【解决方案1】:

我认为您遇到的错误是尝试设置所选选项。 gs_Category 是一个选择下拉菜单。要更改所选选项,请尝试:

$('#gs_Category').find('option[value="' + $('#mycat').val() + '"]').attr('selected', true);

更新

在设置选定值后添加以下行将触发网格的过滤器事件(因为您使用的是本地数据类型)。

$('#gs_Category').trigger('change');

【讨论】:

  • 不再首选以这种方式使用attr() - 改为使用prop()。见api.jquery.com/prop
  • @ChristopherArmstrong 我最初的答案使用了prop 方法(我更喜欢使用它),但是我一直收到一个错误,说.prop 不是一个函数。我把它切换到attr,效果很好。
  • @ChristopherArmstrong 在深入研究了 OP 的代码后,.prop 不起作用的原因是他们使用的是 1.5。 .prop 方法直到 1.6 才可用。
猜你喜欢
  • 1970-01-01
  • 2013-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-04
  • 1970-01-01
  • 2017-09-14
  • 1970-01-01
相关资源
最近更新 更多