我有一个网格,其中包含一个带按钮的日期选择器和一个用于在日期更改时重新加载网格的复选框。 datepicker初始化为今天的。这很好用。但是,我无法想象如何覆盖网格中的默认网址。只要加载了作为树的网格,它就会从url配置中读取默认值。只有当我单击按钮然后它才会重新加载具有所选日期的树。更糟糕的是,当我单击树中的图标以展开子元素时,它会覆盖日期和所有加载的数据以及默认URL的值。有人能告诉我如何正确设置网址吗?另外我不明白为什么点击元素重新加载树,因为我有属性loadonce = true。
感谢
$(document).ready(function(){
$("#list").jqGrid({
url : "/reconcile?unMatchedOnly=true",
datatype : "json",
mtype : 'GET',
colModel : [
{name : "data.key.busnDate", label : "Business Date", hidden:false, sorttype:"date", width : 100 },
{name : "data.product", label : "Product", sorttype:"string", width : 50, editable : false},
{name : "data.quantityBought", label : "Quantity Bought", sorttype:"int", width : 100, editable : false},
{name : "matches", label : "match", "edittype":"checkbox","formatter":"checkbox", width : 25, editable : false}
],
cmTemplate: { width: 70 },
treeGrid: true,
pager : '#pager',
treeGridModel: "adjacency",
ExpandColumn: "data.key.busnDate",
rowNum : 25,
height: 'auto',
rowList : [ 25,50,100,200 ],
loadonce:true,
});
jQuery("#list").jqGrid('navGrid', '#pager', {
edit : false,
add : false,
del : false,
view : true,
search : true
});
$('#datePick').datepicker({
onSelect: function (dateText, inst) {
var e = $("#list").data("events");
if (typeof (e) !== "undefined" && typeof (e.reloadGrid) !== "undefined") {
$("#list").trigger("reloadGrid");
}
}
}
);
$("#datePick").datepicker('setDate', new Date());
jQuery("#list").setGridParam({url:'/reconcile?datePick=' + $("#datePick").val() + '&unMatchedOnly=' + $("#unMatchedOnly").val(),page:1});
var url = '/reconcile?datePick=' + $("#datePick").val() + '&unMatchedOnly=' + $("#unMatchedOnly").val();
$("#list").jqGrid('setGridParam', { url: url });
});
$('#showSelected').on('click', function () {
var url = '/reconcile?datePick=' + $("#datePick").val() + '&unMatchedOnly=' + $("#unMatchedOnly").val();
$("#list").jqGrid('setGridParam', { url: url });
$("#list").trigger("reloadGrid");
});
答案 0 :(得分:0)
我无法重现您报告的问题。如果您想立即加载TreeGrid的数据,那么您不需要使用loadonce: true
选项。而不是数据项应包含属性"loaded":true
。
如果您需要向服务器发送一些额外的参数,那么您应该使用postData
参数和定义为函数的属性(请参阅the old answer)。你可以使用
url: "/reconcile",
postData: {
datePick: function () { return $("#datePick").val(); },
unMatchedOnly: function () { return $("#unMatchedOnly").val(); }
}
结果来自#datePick
和#unMatchedOnly
的当前数据将在每次加载网格时发送到服务器。要重新加载TreeGrid,您只需使用$("#list").trigger("reloadGrid");
。
如果您确实根据需要加载了网格数据,那么扩展节点会将nodeid
,n_level
和parentid
参数添加到postData
,并将值{{1参数将从treeANode
更改为展开节点的rowid。要在重新加载之前重置参数,您需要将-1
参数重置为treeANode
。
我不知道数据的格式,它会返回-1
,但我想您可以使用以下代码
url: "/reconcile"
正如我之前所写,如果您确实一次正确加载所有节点($(document).ready(function(){
var $grid = $("#list"),
fullReloadOfTreeGrid = function () {
var p = $grid.jqGrid("getGridParam"); // get reference to parameters
p.treeANode = -1; // be sure that we reload full grid
$grid.trigger("reloadGrid");
};
$('#datePick').datepicker({
onSelect: function (dateText, inst) {
fullReloadOfTreeGrid();
}
});
$("#datePick").datepicker('setDate', new Date());
$grid.jqGrid({
url: "/reconcile?unMatchedOnly=true",
datatype: "json",
postData: {
datePick: function () { return $("#datePick").val(); },
unMatchedOnly: function () { return $("#unMatchedOnly").val(); }
},
colModel: [
{name: "data.key.busnDate", label: "Business Date",
sorttype:"date", width : 100 },
{name: "data.product", label: "Product", width: 50},
{name: "data.quantityBought", label: "Quantity Bought",
sorttype:"int", width: 100},
{name: "matches", label: "match",
"template: "booleanCheckbox", width : 25}
],
cmTemplate: { width: 70 },
treeGrid: true,
pager: true,
treeGridModel: "adjacency",
ExpandColumn: "data.key.busnDate"
}).jqGrid('navGrid', {
edit : false,
add : false,
del : false,
view : true
});
$('#showSelected').on('click', function () {
fullReloadOfTreeGrid();
});
});
属性,则treeANode
重置为-1
不需要在所有节点中。)