【问题标题】:How can I use jqGrid along with textbox to search?如何使用 jqGrid 和文本框进行搜索?
【发布时间】:2011-09-12 17:14:05
【问题描述】:

我的数据已正确加载到我的页面上。但是,我有 2 个文本框和一个提交按钮,我想根据这些按钮过滤来自服务器的记录。

注意:我没有使用 jqgrid 默认提供的现有过滤器功能。

我有点困惑如何实现这一目标。 jqgrid 是否有任何内置功能来实现这一点?我目前处理这个的方式是我在我的 javascript 中处理点击事件并将发布数据提供给操作方法:

  $('#submit').click(function () {

            $("#customers").jqGrid('setGridParam', { postData: { 'ContactName': $('#contactName').val(),
                CompanyName: $('#companyName').val()
            }
            });

            $("#customers").trigger("reloadGrid");

        });

然后在操作方法上捕获此帖子数据并且它工作正常。有没有更好的方法来做到这一点?还是我在正确的轨道上?有时我觉得我在服务器上编写的代码更少,而自从我开始使用 Asp.Net MVC 3.0 以来,我更像是一个客户端程序员;)

【问题讨论】:

  • 我很想看到这个问题的答案。我最终在我的实现中做了一个相当相似的动作。我所做的唯一可能有用的事情是将网格构建和过滤器更新包装在自定义 jquery 插件中。这允许我只调用 jqGrid_custom("updateFilter","newfilter");一些额外的工作,但它允许我在所有网格上使用相同的解决方案。

标签: c# jquery asp.net-mvc asp.net-mvc-3 jqgrid


【解决方案1】:

您不必使用 setGridParam 来更改 postData,因为您可以声明一个函数:

jqGrid({
    url : ...,
    datatype : ...,
    mtype : "POST",
    postData : { 
            "ContactName" : (function() {
                            return $("#contactName").val();
                        })
    }
}

所以你的提交函数只会调用 reloadGrid

 $('#submit').click(function () {
    $("#customers").trigger("reloadGrid");
 }

如果你想减少代码量,你最好在 JS 中创建一个简单的 API 来选择客户、人员、联系人等实体。目前我有一个应用程序,它的表单由几十个这样的实体组成 - 所以我必须创建一个用于选择的 JS API(它还提供了通用的外观和感觉)。从客户端客户指定要获取的列表的名称,而可能名称的列表在服务器的配置文件中定义,该文件还定义了对ORM的查询以及如何显示字段(我正在使用表达式语言进行映射从实体字段到字符串)。

【讨论】:

  • 谢谢,您节省了我写答案的时间,并提供了详细的信息。我建议@Anthony 阅读the answer,它准确地描述了他的情况。
  • @Oleg:你是jqgrid的开发者吗?你怎么对 jqgrid 了解这么多?您超越了 OP 通常要求的范围,涵盖了所有不同的可能场景。
  • @Oleg:我只是好奇(与问题无关)但是,为什么我看到 Boris Treukhov 6 小时前发布了答案,而您在 7 小时前发布了对该答案的评论,即您发布了对 1 小时后要写的鲍里斯发表评论?
  • @Anthony:我不是 jqGrid 的开发人员,但是自从我使用它的过去 2 年以来,我发布了许多错误修复并提出了一些现在在代码中的新功能。 JavaScript、jQuery、jqGrid 对我来说是两年前的新手。我喜欢学习新事物并帮助他人。我不时改变我感兴趣的主题来研究新事物。在系统开发中为 windows、密码学和简单的 C/C++/C# 编写答案会带来更多的声誉,但许多其他人已经知道同样的事情。我认为我对 jqGrid 的回答对真实的人更有帮助,并且我提高了我的知识。
  • @Oleg:好的!伟大的!我怎么联系你?还是您只回答 SO?
猜你喜欢
  • 1970-01-01
  • 2014-08-10
  • 2018-02-08
  • 1970-01-01
  • 2017-09-06
  • 1970-01-01
  • 2021-02-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多