jqGrid:从已在Hierarchical网格中单击的行中获取数据

jqGrid:从已在Hierarchical网格中单击的行中获取数据,jqgrid,Jqgrid,我目前正在从事一个项目,该项目使用jqGrid和多个子网格。我试图在单击或双击行时获取rowid(并获取行中的数据)。最后,我想用单击行中的数据填充一个文本框 我在这里尝试了一些使用ondblClickRow和OnSecrow示例的变体,但无法使其工作。我想我错过了一些非常简单的东西,但不知道是什么。因此,我返回并尽可能简化它,以便识别行并显示警报。这对我也不管用 (基于中的示例)查找//*************** 靠近底部的部分 var myData = [ // main grid da

我目前正在从事一个项目,该项目使用jqGrid和多个子网格。我试图在单击或双击行时获取rowid(并获取行中的数据)。最后,我想用单击行中的数据填充一个文本框

我在这里尝试了一些使用ondblClickRow和OnSecrow示例的变体,但无法使其工作。我想我错过了一些非常简单的东西,但不知道是什么。因此,我返回并尽可能简化它,以便识别行并显示警报。这对我也不管用

(基于中的示例)查找//*************** 靠近底部的部分

var myData = [
// main grid data
     { id: "1", col1: "11", col2: "12",
         subgrid: [
                // data for subgrid for the id=m1
                    { id: "1", c1: "aa", c2: "ab", c3: "ac",
                        subgrid: [
                            // data for subgrid for the id=m1, subgridId=s1a
                            { id: "1", d1: "2aa", d2: "2ab", d3: "2ac" },
                            { id: "2", d1: "2ba", d2: "2bb", d3: "2bc" },
                            { id: "3", d1: "2ca", d2: "2cb", d3: "2cc" }
                        ]},
                { id: "2", c1: "ba", c2: "bb", c3: "bc" },
                { id: "3", c1: "ca", c2: "cb", c3: "cc" }
         ]},
    { id: "2", col1: "21", col2: "22",
        subgrid: [
            // data for subgrid for the id=m2
            { id: "1", c1: "1xx", c2: "1xy", c3: "1xz",
                subgrid: [
                    // data for subgrid for the id=m2, subgridId=s2a
                    { id: "1", d1: "2xx", d2: "2xy", d3: "2xz" }
                ]}
        ]},
    { id: "3", col1: "31", col2: "32" }
],
removeSubgridIcon = function () {
    var $this = $(this),
        idPrefix = $this.jqGrid("getGridParam", "idPrefix");
    $this.find(">tbody>tr.jqgrow>td.ui-sgcollapsed").filter(function () {
        var rowData = $this.jqGrid("getLocalRow",
                $.jgrid.stripPref(idPrefix, $(this).closest("tr.jqgrow").attr("id")));
        return rowData.subgrid == null;
    }).unbind("click").html("");
},
isHasSubrids = function (data) {
    var l = data.length, i;
    for (i = 0; i < l; i++) {
        if (data[i].subgrid != null) {
            return true;
        }
    }
    return false;
},
specificGridOptions = [
    {
        colNames: ["Column 1", "Column 2"],
        colModel: [
            { name: "col1" },
            { name: "col2" }
        ],
        cmTemplate: { width: 200 },
        sortname: "col1",
        sortorder: "desc",
        idPrefix: "s_",
        pager: "#pager",
        caption: "Demonstrate how to create subgrid from local hierarchical data"
    },
    {
        colNames: ["Colunm1", "Colunm2", "Colunm3"],
        colModel: [
            { name: "c1" },
            { name: "c2" },
            { name: "c3" }
        ],
        cmTemplate: { width: 112 },
        sortname: "c1",
        sortorder: "desc"
    },
    {
        colNames: ["Col 1", "Col 2", "Col 3"],
        colModel: [
            { name: "d1" },
            { name: "d2" },
            { name: "d3" }
        ],
        cmTemplate: { width: 90 },
        sortname: "d1",
        sortorder: "desc"
    }
],
commonGridOptions = {
    datatype: "local",
    gridview: true,
    rownumbers: true,
    autoencode: true,
    height: "100%",
    //***************
    onSelectRow : function () 
    {
        alert('test!');
    },
    //also tried many variation on this
    ondblClickRow: function(rowid) 
    {
        alert(rowid);
    }
    //***************
    loadComplete: function () {
        // one can use loadComplete: removeSubgridIcon, but I included
        // curent implementation of loadComplete only to show how to call
        // removeSubgridIcon from your loadComplete callback handler
    removeSubgridIcon.call(this);
},
subGridRowExpanded: function (subgridDivId, rowId) {
    var $subgrid = $("<table id='" + subgridDivId + "_t'></table>"),
        subgridLevel = $(this).jqGrid("getGridParam", "subgridLevel") + 1,
        parentIdPrefix = $(this).jqGrid("getGridParam", "idPrefix"),
        pureRowId = $.jgrid.stripPref(parentIdPrefix, rowId),
        localRowData = $(this).jqGrid("getLocalRow", pureRowId);
    $subgrid.appendTo("#" + $.jgrid.jqID(subgridDivId));
    $subgrid.jqGrid($.extend(true, {}, commonGridOptions, specificGridOptions       [subgridLevel], {
        data: localRowData.subgrid,
        subGrid: isHasSubrids(localRowData.subgrid),
        subgridLevel: subgridLevel,
        idPrefix: rowId + "_",
        rowNum: 10000 // we use this to have no pager in the subgrids
    }));
}
};

$("#list").jqGrid($.extend(true, {}, commonGridOptions, specificGridOptions[0], {
    data: myData,
    subgridLevel: 0,
    subGrid: isHasSubrids(myData)
}));
var myData=[
//主网格数据
{id:“1”,col1:“11”,col2:“12”,
子网格:[
//id=m1的子网格数据
{id:“1”,c1:“aa”,c2:“ab”,c3:“ac”,
子网格:[
//id=m1、subgridId=s1a的子网格数据
{id:“1”,d1:“2aa”,d2:“2ab”,d3:“2ac”},
{id:“2”,d1:“2ba”,d2:“2bb”,d3:“2bc”},
{id:“3”,d1:“2ca”,d2:“2cb”,d3:“2cc”}
]},
{id:“2”,c1:“ba”,c2:“bb”,c3:“bc”},
{id:“3”,c1:“ca”,c2:“cb”,c3:“cc”}
]},
{id:“2”,col1:“21”,col2:“22”,
子网格:[
//id=m2的子网格数据
{id:“1”,c1:“1xx”,c2:“1xy”,c3:“1xz”,
子网格:[
//id=m2、subgridId=s2a的子网格数据
{id:“1”,d1:“2xx”,d2:“2xy”,d3:“2xz”}
]}
]},
{id:“3”,col1:“31”,col2:“32”}
],
removeSubgridIcon=函数(){
变量$this=$(this),
idPrefix=$this.jqGrid(“getGridParam”,“idPrefix”);
$this.find(“>tbody>tr.jqgrow>td.ui”).filter(函数(){
var rowData=$this.jqGrid(“getLocalRow”,
$.jgrid.stripref(idPrefix,$(this).closest(“tr.jqgrow”).attr(“id”);
返回rowData.subgrid==null;
}).unbind(“click”).html(“”);
},
isHasSubrids=函数(数据){
var l=数据长度,i;
对于(i=0;i

有人知道为什么它无法识别行单击/双击吗?

您在评论中写道,您从服务器获取网格数据。我认为在本例中使用
数据类型:“local”
不是最佳选择。看看我在哪里描述了如何做同样的事情,但是使用了
数据类型:“json”

现在我回到你的主要问题上来。我不明白您想要填充什么文本框(HTML输入元素),以及输入元素是在网格内部还是外部。然而,您可能遇到的唯一问题是正确使用jqGrid的
idPrefix
选项

了解jqGrid使用HTML
来表示网格体是非常重要的在jqGrid的当前实现中,
的每个
元素必须具有
id
属性。因此,输入数据中的
id
属性将用于分配
元素的
id
属性的值。如果有更多