用于jqGrid搜索的任意索引(列名)

Arbitrary index (column name) for jqGrid search

本文关键字:列名 索引 任意 jqGrid 搜索 用于      更新时间:2023-09-26

我有一个jqGrid列定义如下

        name : 'idmycolumn',
        index : 'idmycolumn',
        width : 80,
        align : 'right',
        search : true,

id名称(ìdmycolumn)对于我的SQL更新操作是好的,但对于搜索则不是。我如何改变搜索操作的名称(是另一个id,让我们说idmysearch)?

所以基本上我需要一个不同的SQL列更新,因为我需要搜索。有机会吗?


对下面奥列格问题的进一步澄清

  • 如何在网格中填充行?
  • 第一列的整数值
  • idmycolumn是行吗?你在列中使用key: true吗?不,不行
  • 您使用哪种编辑模式?您使用哪种搜索(工具栏搜索,搜索对话框,两者)?内联编辑,工具栏搜索
  • idmycolumn列排序期间需要使用哪个名称?用于搜索和排序的列名是否应该相同?搜索应该是"idmysearch",任何其他(sort,…)"idmycolumn"
  • 是否使用loadonce: true选项?loadonce: default/false

澄清第二部分:

因为我没有设置stringResult = true某处(我刚刚检查),默认是false。无论如何,这个参数是一个很好的提示,谢谢。

但是,我也在服务器端对过滤器进行解析,这就是我目前用idmysearch替换idmycolumn的地方。我只是想知道我是否可以在将过滤器发送到服务器之前在客户端预先替换该过滤器名称。

解决方案很大程度上取决于您使用的方法。jqGrid提供了许多选项,可用于更改方法的行为或参数的格式,例如将这些参数发送到服务器。此外,有许多回调和事件允许您在发送到服务器之前修改参数。重要的是要了解搜索参数将保存在postData选项中。所有的选项都在一个对象内,你可以通过使用$("#gridid").jqGrid("getGridParam")来获得,或者你可以通过使用$("#gridid").jqGrid("getGridParam", "postData")来获得特定的选项,例如postData选项。返回值 jqGrid使用的内部对象的引用。因此,您可以修改它,jqGrid将使用自动修改的值。在这种情况下,不需要使用像setGridParam这样的方法。

因此,您的问题的解决方案可能如下。在filterToolbar方法中添加beforeSearch回调,将postDataidmycolumn属性从idmycolumn修改为idmysearch:

$("#gridid").jqGrid("filterToolbar", {
    beforeSearch: function () {
        var postData = $(this).jqGrid("getGridParam", "postData");
        if (postData.hasOwnProperty("idmycolumn")) {
            postData.idmysearch = postData.idmycolumn;
            delete postData.idmycolumn;
        }
    }
});