jqgrid中的错误,只有第一个搜索显示下拉列表

时间:2011-03-19 05:35:44

标签: jquery jqgrid filtering

我正在使用工具栏过滤器(主要是选择下拉列表)和多个高级过滤器。这工作正常,除非我以编程方式设置一堆过滤器,然后加载下拉列表,它接受第一个条目并将文本框转换为下拉列表,只显示我"等于"在操作下拉列表中。

问题是所有其他项目仍会显示文本框。这是一张图片:

enter image description here

你看到第一行有一个下拉列表,但其他行是文本框。如果这是正常工作,他们都将是文本框。此外,操作默认值不是默认为"等于"

这是我的代码:

在启动时,我以编程方式设置了一些过滤器:

var myfilter = { groupOp: "AND", rules: [] };
myfilter.rules.push({ field: "Status", op: "ne", data: "Completed" });
myfilter.rules.push({ field: "Status", op: "ne", data: "On Hold" });
myfilter.rules.push({ field: "Status", op: "ne", data: "Cancelled" });


[a bunch of code to initialize grid . . .]   
postData: { filters: JSON.stringify(myfilter) },

此外,还有状态列的colModel:

{ name: "Status", index: "Status", width: 55, stype: 'select', searchoptions: { sopt: ['eq'], dataUrl: "/Project/StatusGetSelectData1"} },

然后我点击搜索按钮(我有 multiplesearch:true

因为"状态"列是stype:"选择"它似乎只能告诉我"等于"操作员下拉菜单中的操作符(这违反了高级过滤器的目的)和高级过滤器上的第一项转换为带有选择项目的选项但是:

  1. 它不会将操作的值默认为"等于"你可以看到它保持空白
  2. DONT以下的其他过滤器转换为下拉列表(它们保留文本框)并且也不会默认为等于
  3. 更新

    我解决了一个问题,因为我没有“问题”。在这个领域的sopts设置中。我现在看到了:

    enter image description here

    另外,Oleg下面要求查看DataUrl的输出: Oleg,我所做的就是获取值列表并将其推入下拉视图(见下文)

    <select>
    <option value="">(None)</option>
    <%
    foreach (var pair in Model)
    {
        %><option value="<%= pair.Value %>"><%= pair.Value %></option>
    <%    
    }
    %></select>
    

    更新

    现在已在jqGrid 4.0中修复此问题

1 个答案:

答案 0 :(得分:1)

代码中有一个明显错误:您在过滤器中使用op: "ne",但仅将'eq'定义为唯一允许的比较操作searchoptions: { sopt: ['eq'], ...}。我建议您使用sopt中的完整操作列表,并将'eq'设置为sopt数组的第一个元素。

更新:我可以确认jqGrid的 jquery.searchFilter.js 模块中存在错误。 Here是可用于重现您也遇到的问题的代码。我找不到一些快速的bug修复。就像我之前写的那样, jquery.searchFilter.js 模块将在下一版jqGrid中的新编写模块 grid.filter.js 上被替换。如何看待here您在问题中描述的问题新模块中不存在。所以我不确定旧模块是否会被修复。旧模块使用jQuery.clone等jQuery 1.4.x和1.5.x中的错误的一些函数的主要问题,这些错误可能只在1.6版本中修复。因此,为了解决 jquery.searchFilter.js 模块中存在的一些问题,必须重写其中的许多部分。

另一方面,在测试期间,我发现新模块中至少有5个错误,我将在稍后报告给trirand。因此,您应该耐心等待jqGrid的下一个版本,或者至少等到https://github.com/tonytomov/jqGrid/上的版本更稳定。