Можно ли позволить JQGrid Tree использовать OnSelectRow для расширения узлов - PullRequest
0 голосов
/ 24 сентября 2019

В настоящее время эта сетка дерева jq способна расширять узлы, нажимая treeIcons.Можно ли улучшить сетку, способную расширять узлы, используя onSelectRow?

Любая помощь приветствуется.

        $("#Grid1").jqGrid({
        datatype: "jsonstring",
        height: "auto",
        loadui: "disable",
        colNames: ['Category', 'ID', 'Name'],
        colModel: [
            {
                name: 'Category', index: 'Category', width: 450, sortable: false
            },
            {
                name: 'ID', index: 'ID', width: 200, align: "center", sortable: false

            },
            { name: 'Name', index: 'Name', width: 200, align: "center", sortable: false },         
        ],
        jsonReader: {
            repeatitems: false,
            root: "root"
        },
        rowattr: function (rd) {
            if (rd.parent === null) {
                return { "class": "myParentClass" };
            }
        },
        treeIcons: { leaf: 'ui-icon-blank' },
        treeGrid: true,
        treeGridModel: "adjacency",
        ExpandColumn: "Period",
        viewrecords: true,
        loadonce: false,
        search: false,
        multiSort: false,
        loadComplete: function () {
            $("#Grid1 .ui-jqgrid .ui-widget-header").addClass('myheaderclass');
            $("#Grid1 tr.jqgrow:odd").addClass('myOddAltRowClass');
            $("#Grid1 tr.jqgrow:even").addClass('myAltRowClass');
        }
});
    $("#Grid1").jqGrid('setGridParam', { datastr: totalValue });
    $("#Grid1").trigger('reloadGrid');
});

1 Ответ

1 голос
/ 25 сентября 2019

Это возможно, но код протестирован в Guriddo jqGrid, и я не знаю, будет ли это работать на free-jqgrid, который вы используете.Вы можете попробовать.

  1. Убедитесь, что для параметра ExpandColClick установлено значение false.

  2. Используйте следующий код:

            onSelectRow : function( rowid ) {
                if(rowid) 
                {
                    var ind =$.jgrid.stripPref(this.p.idPrefix,rowid),
                    pos = this.p._index[ind],
                    isLeaf = this.p.treeReader.leaf_field,
                    expanded = this.p.treeReader.expanded_field;
                    if(!this.p.data[pos][isLeaf]){
                        if(this.p.data[pos][expanded]){
                            $(this).jqGrid("collapseRow",this.p.data[pos]);
                            $(this).jqGrid("collapseNode",this.p.data[pos]);
                        } else {
                            $(this).jqGrid("expandRow",this.p.data[pos]);
                            $(this).jqGrid("expandNode",this.p.data[pos]);
                        }
                    }                       
                } 
            },
    

Наслаждайтесь

...