如何使用搜索工具栏显示已过滤的jqgrid,使用单个调用预先填充以检索数据

时间:2011-11-26 15:06:43

标签: jqgrid

我正在寻找一种方法来显示jqgrid,其中搜索工具栏已预先填充,并且此工具栏已过滤数据。我尝试了下面的代码,但这会产生两个检索数​​据的请求。第一个请求检索 未过滤的数据,只有第二个请求检索正确的数据。

如何消除第一个请求,以便检索过滤后的数据,并立即预先填充搜索工具栏?

var grid = $("#grid"),
    notLoaded= true;
grid.jqGrid({
datatype: "json",
mtype: 'POST',
   loadComplete: function() { 
     $("#gs_Name").val('<%= Request.QueryString["Name"] %>');
     if (notLoaded) {
       setTimeout( function() {
         $("#grid")[0].triggerToolbar();
         }, 100 );
       notLoaded = false;
       }
     }
 });

更新

我尝试使用从查询字符串

传递的搜索条件填充搜索工具栏
$(function () {
    var grid = $("#grid"),
        urlFilters;
    var namedParameters = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'),
        parameters = {}, 
        nameAndValue, 
        i; 
    for (i = 0; i < namedParameters.length; i += 1) { 
        nameAndValue = namedParameters[i].split('='); 
        parameters[nameAndValue[0]] = decodeURIComponent(nameAndValue[1]); 
        if (nameAndValue[0] === "filters") { 
            urlFilters= decodeURIComponent(nameAndValue[1]); 
        } 
    } 

    grid.jqGrid({
     postData: { filters: urlFilters }, 
     search:true, 
     loadComplete: function() { 
         refreshSearchingToolbar( $(this), 'eq');
         }
     ...

如果网格已加载,但搜索工具栏为空,但网格已过滤并且正确填充了查找对话框。 如果打开查找对话框,也会填写搜索工具栏。

调试器在refreshSearchingToolbar条件中显示

if (typeof (postData.filters) === "string" &&
                        typeof ($grid[0].ftoolbar) === "boolean" && $grid[0].ftoolbar) {

如果不满意:ftoolbar未定义。 我删除了这个检查,但之后在第tagName = control[0].tagName.toUpperCase();行有关未定义的tagName的错误 如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您应该使用search: truepostData: {filters: theFilterAsJSON}参数创建jqGrid。查看the answerthis onethis one了解详情。

更新:The answer显示了如何解析postData.filters并填写搜索工具栏的字段(只要有可能)相应的过滤器。