jqgrid覆盖树中的默认URL

时间:2017-07-10 14:56:57

标签: jqgrid

我有一个网格,其中包含一个带按钮的日期选择器和一个用于在日期更改时重新加载网格的复选框。 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");
});

1 个答案:

答案 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");

如果您确实根据需要加载了网格数据,那么扩展节点会将nodeidn_levelparentid参数添加到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 不需要在所有节点中。)