尝试使用jqGrid自动将树网格扩展到第3级

时间:2012-06-01 20:25:59

标签: javascript jquery jquery-plugins jqgrid treegrid

我们目前正在尝试将jqGrid treegrid自动扩展到树的第3级,以便所有子项都可见。当前数据集是数千或行深,我们被迫在请求扩展时动态加载每个节点,这需要重新加载网格。扩展节点ID作为已保存的树状态保存在数组中,以便在重新显示树时可以重新展开节点。这会在扩展发生时从数据库加载每个节点。 AS每个节点都是动态加载和扩展的gridComplete和loadComplete事件按预期处理。

我们尝试通过利用保存树状态和现有逻辑来触发第3级扩展,以在现有逻辑中适当地分解树。我们遇到的问题是树不能足够快地扩展以便进行处理,我们永远不能完全破坏树。

这是迭代父项以捕获适当的ID进行扩展的函数:

function ExpandGridLevel(level) {
        if (ExpandGridLevels == false) {
            ExpandTotalLevels = level; 
            ExpandLevelCurrent = 0;
            ExpandGridLevels = true;
        }

        if (!TreeExpandState) {
            TreeExpandState = new Array();
        }
        $(".treeclick", "#Grid").each(function () {
            if ($(this).hasClass("tree-plus")) {
                var id = $(this).parents("tr").attr("id");
                var rowLevel = $("#MaGrid").getLocalRow(id);
                if (rowLevel.level ==  ExpandLevelCurrent) {
                    TreeExpandState.push(id);
                    $(this).removeClass("tree-plus");
                    $(this).addClass("tree-minus");
                }
            }
        });


        $(this).trigger("reloadGrid");
        $("#Grid").jqGrid("setGridParam", { datatype: "local" });

        ExpandLevelCurrent++;
        RefreshGrid();
    }

我们的gridComplete和loadComplete代码段:

loadComplete: function (data) {                
                $("#Grid").jqGrid("setGridParam", { datatype: "local" });

                if (TreeExpandState.length == 0) {
                          setTimeout(function () { ExpandGridLevel (ExpandTotalLevels); }, 3000);
                }
}

gridComplete: function () {
                if (TreeExpandState) {

                    var rowId =  TreeExpandState.shift();
                    ExpandNode(rowId);
                }
 }

我们正在尝试使用jqGrid做什么?如果是这样,我们如何知道树木扩张何时真正完成,我们可以重申已经消耗的网格来开始扩展下一级父母?

0 个答案:

没有答案
相关问题