Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jqGrid treegrid,以编程方式展开节点_Jqgrid - Fatal编程技术网

jqGrid treegrid,以编程方式展开节点

jqGrid treegrid,以编程方式展开节点,jqgrid,Jqgrid,我正在试验jqGrid treegrid特性。有人能解释为什么在这个例子中“expandNode”方法不起作用吗?(根据Chrome和JQ 1.4.2进行测试) 注1:我无法使用任何扩展或折叠方法来执行任何操作。它们会更改图标的外观,但子行不会消失。如果手动单击该图标,外观将发生更改,子行将按预期隐藏 注2:展开/折叠行和展开/折叠节点之间有什么区别 注3:我在jqGrid wiki上找到了一些关于使用setTimeOut的条目,但我认为这是正确的 关于想要在初始加载时扩展所有内容。我想在点击的

我正在试验jqGrid treegrid特性。有人能解释为什么在这个例子中“expandNode”方法不起作用吗?(根据Chrome和JQ 1.4.2进行测试)

注1:我无法使用任何扩展或折叠方法来执行任何操作。它们会更改图标的外观,但子行不会消失。如果手动单击该图标,外观将发生更改,子行将按预期隐藏

注2:展开/折叠行和展开/折叠节点之间有什么区别

注3:我在jqGrid wiki上找到了一些关于使用setTimeOut的条目,但我认为这是正确的 关于想要在初始加载时扩展所有内容。我想在点击的基础上完成它,如这里所示

$(document).ready(function() {

    var table = $("<table id=treegrid></table>");

    $("body").append(table);

    grid = $("#treegrid");

    /* DIRECT COPY FROM SO http://stackoverflow.com/questions/6788727/jqgrid-tree-grid-with-local-data */
    var mydata = [
        { id:"1", name:"Cash",   num:"100", debit:"400.00",credit:"250.00", balance:"150.00", enbl:"1",
          level:"0", parent:"",  isLeaf:false, expanded:false, loaded:true },
        { id:"2", name:"Cash 1", num:"1",   debit:"300.00",credit:"200.00", balance:"100.00", enbl:"0",
          level:"1", parent:"1", isLeaf:false, expanded:false, loaded:true },
        { id:"3", name:"Sub Cash 1", num:"1",debit:"300.00",credit:"200.00", balance:"100.00", enbl:"1",
          level:"2", parent:"2", isLeaf:true,  expanded:false, loaded:true },
        { id:"4", name:"Cash 2", num:"2",debit:"100.00",credit:"50.00", balance:"50.00", enbl:"0",
          level:"1", parent:"1", isLeaf:true,  expanded:false, loaded:true },
        { id:"5", name:"Bank\'s", num:"200",debit:"1500.00",credit:"1000.00", balance:"500.00", enbl:"1",
          level:"0", parent:"",  isLeaf:false, expanded:true, loaded:true },
        { id:"6", name:"Bank 1", num:"1",debit:"500.00",credit:"0.00", balance:"500.00", enbl:"0",
          level:"1", parent:"5", isLeaf:true,  expanded:false, loaded:true },
        { id:"7", name:"Bank 2", num:"2",debit:"1000.00",credit:"1000.00", balance:"0.00", enbl:"1",
          level:"1", parent:"5", isLeaf:true,  expanded:false, loaded:true },
        { id:"8", name:"Fixed asset", num:"300",debit:"0.00",credit:"1000.00", balance:"-1000.00", enbl:"0",
          level:"0", parent:"",  isLeaf:true,  expanded:false, loaded:true }
        ],

    grid = $("#treegrid");

    grid.jqGrid({
        datatype: "jsonstring",
        datastr: mydata,
        colNames:["Id","Account","Acc Num","Debit","Credit","Balance","Enabled"],
        colModel:[
            {name:'id', index:'id', width:1, hidden:true, key:true},
            {name:'name', index:'name', width:180},
            {name:'num', index:'acc_num', width:80, align:"center"},
            {name:'debit', index:'debit', width:80, align:"right"},
            {name:'credit', index:'credit', width:80,align:"right"},
            {name:'balance', index:'balance', width:80,align:"right"},
            {name:'enbl', index:'enbl', width: 60, align:'center',
             formatter:'checkbox', editoptions:{value:'1:0'},
             formatoptions:{disabled:false}}
        ],
        height: 'auto',
        gridview: true,
        rowNum: 10000,
        sortname: 'id',
        treeGrid: true,
        treeGridModel: 'adjacency',
        treedatatype: "local",
        ExpandColumn: 'name',
        caption: "Demonstrate how to use Tree Grid for the Adjacency Set Model",
        jsonReader: {
            repeatitems: false,
            root: function (obj) { return obj; },
            page: function (obj) { return 1; },
            total: function (obj) { return 1; },
            records: function (obj) { return obj.length; }
        }
    });
    /* END DIRECT COPY */    

    var f = $("<button>ExpandCash</button>");

    $("body").append(f);

    // Test reloading and summarization changes
    f.bind("click",function() {
        var rec = $("#treegrid").getRowData("1");
        //console.log(JSON.stringify(rec));
        $("#treegrid").expandNode(rec);
        $("#treegrid").expandRow(rec);
    });

});
$(文档).ready(函数(){
变量表=$(“”);
$(“正文”)。附加(表格);
网格=$(“#treegrid”);
/*SO的直接副本http://stackoverflow.com/questions/6788727/jqgrid-tree-grid-with-local-data */
var mydata=[
{id:“1”,名称:“现金”,数字:“100”,借方:“400.00”,贷方:“250.00”,余额:“150.00”,enbl:“1”,
级别:“0”,父级:,isLeaf:false,扩展:false,加载:true},
{id:“2”,名称:“现金1”,数字:“1”,借方:“300.00”,贷方:“200.00”,余额:“100.00”,enbl:“0”,
级别:“1”,父级:“1”,isLeaf:false,扩展:false,加载:true},
{id:“3”,名称:“子现金1”,数字:“1”,借方:“300.00”,贷方:“200.00”,余额:“100.00”,enbl:“1”,
级别:“2”,父级:“2”,isLeaf:true,扩展:false,加载:true},
{id:“4”,名称:“现金2”,数字:“2”,借方:“100.00”,贷方:“50.00”,余额:“50.00”,enbl:“0”,
级别:“1”,父级:“1”,isLeaf:true,扩展:false,加载:true},
{id:“5”,名称:“银行”,数字:“200”,借方:“1500.00”,贷方:“1000.00”,余额:“500.00”,enbl:“1”,
级别:“0”,父级:,isLeaf:false,扩展:true,加载:true},
{id:“6”,名称:“银行1”,数字:“1”,借方:“500.00”,贷方:“0.00”,余额:“500.00”,enbl:“0”,
级别:“1”,父级:“5”,isLeaf:true,扩展:false,加载:true},
{id:“7”,名称:“银行2”,数字:“2”,借方:“1000.00”,贷方:“1000.00”,余额:“0.00”,enbl:“1”,
级别:“1”,父级:“5”,isLeaf:true,扩展:false,加载:true},
{id:“8”,名称:“固定资产”,数字:“300”,借方:“0.00”,贷方:“1000.00”,余额:“-1000.00”,enbl:“0”,
级别:“0”,父级:,isLeaf:true,扩展:false,加载:true}
],
网格=$(“#treegrid”);
grid.jqGrid({
数据类型:“jsonstring”,
datastr:mydata,
colNames:[“Id”,“Account”,“Acc Num”,“Debit”,“Credit”,“Balance”,“Enabled”],
colModel:[
{name:'id',index:'id',width:1,hidden:true,key:true},
{名称:'name',索引:'name',宽度:180},
{名称:'num',索引:'acc_num',宽度:80,对齐:“中心”},
{名称:'debit',索引:'debit',宽度:80,对齐:“right”},
{名称:'credit',索引:'credit',宽度:80,对齐:“right”},
{名称:'balance',索引:'balance',宽度:80,对齐:“right”},
{名称:'enbl',索引:'enbl',宽度:60,对齐:'center',
格式化程序:'checkbox',编辑选项:{value:'1:0'},
formatoptions:{disabled:false}
],
高度:“自动”,
gridview:没错,
行数:10000,
sortname:'id',
特雷格里德:没错,
treeGridModel:'邻接',
树型:“本地”,
ExpandColumn:'名称',
描述:“演示如何为邻接集模型使用树状网格”,
jsonReader:{
重复项:false,
根:函数(obj){return obj;},
第页:函数(obj){return 1;},
总计:函数(obj){return 1;},
记录:函数(obj){return obj.length;}
}
});
/*结束直接复制*/
var f=$(“扩展现金”);
$(“正文”)。附加(f);
//测试重新加载和摘要更改
f、 绑定(“单击”,函数(){
var rec=$(“#treegrid”).getRowData(“1”);
//log(JSON.stringify(rec));
$(“#treegrid”).expandNode(rec);
$(“#treegrid”).expandRow(rec);
});
});

我可以通过使用以下代码瞄准根节点(然后是第二个标题;我的网格有3层深)使其展开:

函数展开(){
var rows=$(“#treeGrid”).jqGrid('getRootNodes');
对于(变量i=0;i
放置在一个简单的单击函数中,这将扩展所有节点。数据格式应该不重要,但我使用了json数据。嵌套的“for”循环并不总是最好的方式,但我没有看到另一个适合我的解决方案;不过,除非有大量嵌套节点,否则情况应该不会太糟


注意:此代码对treegrid的级别数敏感;对于超过3个级别(级别0=根,级别1=第一个标题,级别2=叶),您将需要额外的循环(或其他方法),并且对于2个级别的树,不需要内部循环

Aha!我认为答案是,您必须使用“getLocalRow”而不是“getRowData”。算了吧!