Jquery 免费jqGrid 4.8.0-恢复网格工具栏筛选器值
我正在尝试在执行GridUnload之后将网格恢复到以前的状态,包括过滤器、排序、组等。我成功地恢复了所有这些数据,但在网格中缺少了一些不属于我要恢复的数据的可视方面,因此我看不到它们 例如,我确实恢复了过滤器值(工具栏过滤器),但在工具栏中看不到过滤器值。(它们就在那里,因为我可以使用$(“#gview”+$grid.attr('id')+“#”+inputId).val(column.data)还原它们,但我不知道如何在不手动迭代的情况下使它们重新出现 谢谢Jquery 免费jqGrid 4.8.0-恢复网格工具栏筛选器值,jquery,jqgrid,free-jqgrid,Jquery,Jqgrid,Free Jqgrid,我正在尝试在执行GridUnload之后将网格恢复到以前的状态,包括过滤器、排序、组等。我成功地恢复了所有这些数据,但在网格中缺少了一些不属于我要恢复的数据的可视方面,因此我看不到它们 例如,我确实恢复了过滤器值(工具栏过滤器),但在工具栏中看不到过滤器值。(它们就在那里,因为我可以使用$(“#gview”+$grid.attr('id')+“#”+inputId).val(column.data)还原它们,但我不知道如何在不手动迭代的情况下使它们重新出现 谢谢 Tal.我认为如果您已经填充了过
Tal.我认为如果您已经填充了过滤器工具栏的所有字段,那么您可以调用
triggerToolbar
方法。请注意,该方法是DOM元素的方法。因此,您可以只调用
$grid[0].triggerToolbar();
最后,我通过执行以下操作恢复了工具栏过滤器:
regexEscape=函数{
返回s.replace(/[-\/\^$*+.()|[\]{}]/g,'\\$&');
};
函数restoreToolbarFilter($grid,searchParams){
for(输入searchParams){
//还原搜索输入字符串
var column=searchParams[key];
inputId=regexEscape('gs_'+column.field);
$(“#gview"”+$grid.attr('id')+“#”+inputId.val(column.data);
//还原搜索筛选器类型和运算符符号
运算符=$(“#gview_U3;”+$grid.attr('id')+'#'+inputId)。最近('tr')。查找('.soptclass');
$(operator.attr('soper',column.op));
操作数={“eq”:“=”,
“ne”:“!”,
“lt”:“=”,
“bw”:“^”,
“bn”:“!^”,
“in”:“=”,
“ni”:“!=”,
“ew”:“|”,
“en”:“!@”,
“cn”:“~”,
“nc”:“!~”,
“nu”:“#”,
“nn”:“!#”};
$(运算符).text(操作数[column.op]);
}
}
谢谢。triggerToolbar是否向服务器发出另一个post请求?如果是这种情况,我将连续两次调用服务器,结果都是相同的数据。我只需要“显示”工具栏中的值。@Tal:这取决于您使用的搜索选项(或filterToolbar
的选项)。我个人总是使用stringResult:true
。如果对服务器的请求包含与高级搜索相同格式的过滤器
参数(请参阅),但只有一组原因。@Tal:triggerToolbar
只需从筛选器工具栏读取值,将filters
等选项添加到postData
参数,将search
参数设置为true
,并使用触发器reloadGrid
向服务器发出请求或应用本地筛选。我使用earchResult:true。如果触发器工具栏调用reloadGrid,则意味着我将再次转到服务器。在还原网格时(在初始设置期间),我已经去过服务器一次,现在我只想“显示”过滤器值。如果实现这一点的唯一方法是重新加载网格,这将对性能造成一定的损失。@Tal:抱歉,但我不明白您已经实现了什么以及您仍然需要什么。您写了“我恢复了网格(在初始阶段)”。你的意思是什么?如果你从服务器端获取数据,那么我的网格只是选项的组合。如果我要保存或还原网格,我不会保存/还原任何数据,只是排序条件、过滤器、当前页码、选择的行等。我将通过向服务器发送请求来填充数据。它将是**t服务器数据库中当前数据的状态。