2016-12-06 27 views
1

我正在使用版本4.13.1的freejqGrid。我只是添加了过滤器工具栏的代码,这是工作,除了搜索后搜索参数消失。搜索工作和一切,但我想留在工具栏中的文本,直到清除使用(x)。免费jqGrid搜索参数在filterToolbar中消失

$('#jqGrid_destroyed').jqGrid({ 
    url:'/url.php', 
    height: 'auto', 
    shrinkToFit: true, 
    width: Math.floor($(window).width()*1), 
    datatype: 'json', 
    mtype: 'POST', 
    colNames:[ 
     'Flat ID', 
     'Customer', 
     'Flat #', 
     'MiscCode', 
     'Item Number', 
     'Item Description', 
     'plus', 
     'RevDate', 
     'Created Date', 
     'Plate/Flat in QA', 
     'Computer Files to Waiting Destruct', 
     'Plates/Flat Destroyed', 
     'Date Confimation Sent to Customer' 
    ], 
    colModel:[ 
     {name:'flat_id',hidden:true}, 
     {width:14,name:'Customer'}, 
     {width:10,name:'flat_plate_num'}, 
     {width:13,name:'MiscCode'}, 
     {width:20,name:'item_number'}, 
     {width:45,name:'item_description'}, 
     {width:12,name:'plus'}, 
     {width:16,name:'revdate'}, 
     {width:22,name:'created_date', align: "right", hidden:true}, 
     {width:17,name:'flat_in_qa'}, 
     {width:20,name:'computer_files_to_waiting_destruct'}, 
     {width:25,name:'flat_destroyed'}, 
     {width:20,name:'date_confimation_sent_to_customer', formatter : 'date', formatoptions : {srcformat: "Y-m-d", newformat:"m/d/Y"}} 
    ], 
    sortname: 'date_confimation_sent_to_customer', 
    sortorder: 'desc', 
    viewrecords: true, 
    gridview: true, 
    caption: 'Waiting Destruct', 
    rowNum: 10000, 
    pager:true, 
    searching: { defaultSearch: "cn" } 
}).jqGrid("filterToolbar"); 
+2

除非您手动调用网格刷新,否则不应清除搜索参数。你可以使用静态数据在小提琴中重现问题吗? –

+0

是的,页面上没有太多的其他代码,似乎没有再次重新加载。当然,搜索后需要重新加载才能加载新数据。我想知道是否需要将搜索参数从服务器传递回带有数据的客户端? –

+0

我为你做了小提琴,你的代码工作正常:http://jsfiddle.net/ejnrtocw/121/。注:我使用jqGrid 4.6.0,你可以尝试上传4.13.1 –

回答

2

免费的jqGrid 4.13.1推出新功能 - 基于postData.filters过滤器工具栏上的填充。请参阅README4.13.1。该功能有一些错误,存在于您的案例中。这些错误在免费jqGrid的更高版本中得到修复。

可以通过使用loadFilterDefaults: false(通过使用.jqGrid("filterToolbar", {loadFilterDefaults: false})或更好,通过将searching: { defaultSearch: "cn" }更改为searching: { defaultSearch: "cn", loadFilterDefaults: false })来关闭该功能。另一方面,我最好推荐你更新到当前发布的免费版jqGrid:4.13.5或者使用GitHub的最新源代码。

搜索选项loadFilterDefaults: false在许多情况下非常实用。例如,可以使用两个过滤器工具栏和搜索对话框。如果您要在过滤器工具栏中设置一些过滤器,然后打开搜索对话框,则会在对话框中看到当前过滤器。您可以修改它并应用新的过滤器。网格将显示新过滤器,但旧版本的jqGrid仍然会在过滤器工具栏中显示旧过滤器。我发布了the old answer,它显示了如何根据当前使用的过滤器填充过滤器工具栏。如果使用filterToolbar的默认loadFilterDefaults: true选项,新版本的免费jqGrid将自动刷新过滤器工具栏

还有其他常见的情况,其中loadFilterDefaults: true会有帮助。例如,可以使用loadonce: true选项从服务器加载所有JSON数据。免费的jqGrid允许loadonce: true选项与forceClientSorting: true,适用当地数据将在网格中显示之前排序过滤结合起来。它允许加载的所有数据,但只显示过滤和排序的数据,并在本地分页数据。要过滤数据,只需设置filters属性postData。通过使用filterToolbar和默认loadFilterDefaults: true选项,您将看到当前应用的过滤器,这可能对用户有所帮助。

+0

更新到新版本允许在没有'loadFilterDefaults:false'选项的情况下工作。 –

+0

@jeffery_the_wind:这就是我的意思。新的默认选项“loadFilterDefaults:true”很好,但4.13.1中引入的第一个实现包含一些错误。这些错误在更高版本中得到修复。因此我建议更新到4.13.5版本。只有当您现在不能将网站更新到最新的免费jwGrid时,才应该使用'loadFilterDefaults:false'的解决方法。 – Oleg

+0

对,我明白。我只是在评论,所以读者都知道这两种方式都行得通。你用这个软件包的分支真的做得很好。 –