jqgrid 覆盖树中的默认 URL
jqgrid overriding the default URL in a Tree
我有一个网格,它有一个带按钮的日期选择器和一个复选框,用于在日期更改时重新加载网格。日期选择器初始化为今天。这很好用。但是我不知道如何覆盖网格中的默认 url 。每当加载作为树的网格时,它都会从 url 配置中读取默认值。只有当我单击按钮时,它才会重新加载选定日期的树。更糟糕的是,当我单击树中的图标以展开子元素时,它会使用默认值 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");
});
我无法重现您报告的问题。如果你想一次加载 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
和 treeANode
参数由-1
改为展开节点的rowid。要在重新加载之前重置参数 ,您需要将 treeANode
参数重置为 -1
。
我不知道数据的格式,returns 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();
});
});
正如我之前所写,如果您确实一次正确地加载了所有节点(使用loaded:true
属性 在所有节点中)。
我有一个网格,它有一个带按钮的日期选择器和一个复选框,用于在日期更改时重新加载网格。日期选择器初始化为今天。这很好用。但是我不知道如何覆盖网格中的默认 url 。每当加载作为树的网格时,它都会从 url 配置中读取默认值。只有当我单击按钮时,它才会重新加载选定日期的树。更糟糕的是,当我单击树中的图标以展开子元素时,它会使用默认值 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");
});
我无法重现您报告的问题。如果你想一次加载 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
和 treeANode
参数由-1
改为展开节点的rowid。要在重新加载之前重置参数 ,您需要将 treeANode
参数重置为 -1
。
我不知道数据的格式,returns 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();
});
});
正如我之前所写,如果您确实一次正确地加载了所有节点(使用loaded:true
属性 在所有节点中)。