【问题标题】:jqGrid Force filter triggerjqGrid 强制过滤器触发器
【发布时间】:2011-08-24 13:20:58
【问题描述】:

我有 jqGrid 4.1.2 并且我试图强制在 $(document).ready(

上触发过滤器

我想要实现的是用值填充过滤字段之一并“按 Enter”,以便 jqGrid 将其过滤掉。

我已经通过 GET 将值传递给页面,像这样传播过滤器字段值:

         var filteritem = document.getElementById("gs_fieldToBeFilteredID");
         filteritem.value = "MY filter value";

这会导致过滤器字段被“我的过滤器值”填充。但现在我试图在文档末尾触发“输入按下”,如下所示:

$(document).ready(function () {

     $("#myGrid")[0].triggerToolbar();
}
);

我也试过了

 jQuery("#myGrid").jqGrid("filterToolbar");

没有效果。我还将上面的代码放在 jQGrid loadComplete 事件中,也没有任何效果。 过滤器已满,但我“不能”强制它触发过滤......有什么想法吗?!

我会很感激任何帮助。 最好的问候

【问题讨论】:

  • 我发现添加一些延迟会导致这工作正常: var xxx = jQuery("#list2_");警报(“延迟”); xxx.jqGrid("filterToolbar"); $("#list2_")[0].triggerToolbar();但增加延迟不是一种选择

标签: javascript jquery jqgrid jqgrid-asp.net


【解决方案1】:

在我看来,the answer 中的 the old demo 是您所需要的。

<input> 元素上设置value 后,您可以触发change 过滤器,然后使用

$(filteritem).focus().trigger({ type : 'keypress', charCode : 13 });

取决于您触发keypress 事件的位置,您可能需要在单独的 线程中执行此操作。因此,您可能需要在 setTimeout 中执行此操作,就像我在演示中所做的那样。

【讨论】:

    【解决方案2】:

    您应该能够将发布数据添加到网格中,这就是您想要的,因此您无需重新触发网格以重新加载。它会在初始请求中得到它。

    这里是全文:http://www.trirand.com/jqgridwiki/doku.php?id=wiki:post_data_module

    我已经通过“请求前”事件完成了它,设置了一个添加您想要的数据的函数。

    function jqGridBeforeRequest()
    {
       $(this).appendPostData(<JSON/object data here>);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多