Jquery jqGrid。从子网格获取行
我有带子网格的jqGrid 如何从子网格中获取行?我做错了什么? 在函数下面,我尝试获取行,但总是有错误Jquery jqGrid。从子网格获取行,jquery,jqgrid,Jquery,Jqgrid,我有带子网格的jqGrid 如何从子网格中获取行?我做错了什么? 在函数下面,我尝试获取行,但总是有错误 loadComplete: function() { var rowIds = $("#list4").getDataIDs(); $.each(rowIds, function (index, rowId) { //var rows = jQuery("#list4_"+rowId+"_t").GetRowCount(); //v
loadComplete: function() {
var rowIds = $("#list4").getDataIDs();
$.each(rowIds, function (index, rowId)
{
//var rows = jQuery("#list4_"+rowId+"_t").GetRowCount();
//var rows = jQuery("#list4_"+rowId+"_t").getRowData(rowId);
var sgtable = $("#list4_" + rowId + "_t");
$.each(sgtable.rows, function(i, rId) //rows is undefined
{
console.log("rId:" + rId);
var cdn = jQuery("#list4_"+rowId+"_t").jqGrid('getCell', rId, 'ItemTypeName');
var cdv = jQuery("#list4_"+rowId+"_t").jqGrid('getCell', rId, 'ItemValue');
console.log("cdn:" + cdn);
console.log("cdv:" + cdv);
});
});
}
var rows = $("#list4_" + rowId + "_t").getDataIDs();
行始终==0
更新强>
网格:
完整代码如下
jQuery("#list4").jqGrid({
url: getDataUrl,
datatype: "json",
autowidth: false,
shrinkToFit: true,
height: 'auto',
loadonce:true,
colNames: ['ContractNo', 'ParentName', 'ItemTypeName', 'ItemValue', 'ParentItemID', 'ItemID'],
colModel:
[
{ name: 'ContractNo', index: 'ContractNo', hidden: true },
{ name: 'ParentName', index: 'ParentName', hidden: true },
{ name: 'ItemTypeName', index: 'ItemTypeName'/*,width: gwdth/2 */},
{ name: 'ItemValue', index: 'ItemValue'/*,width:gwdth/2*/ },
{ name: 'ParentItemID', index: 'ParentItemID', hidden: true },
{ name: 'ItemID', index: 'ItemID', hidden: true }
],
subGrid: true,
caption: "Contract items",
subGridOptions:
{
"expandOnLoad":true
},
gridComplete: function () {
var rowIds = $("#list4").getDataIDs();
$.each(rowIds, function (index, rowId) {
$("#list4").expandSubGridRow(rowId);
var sdata = $("#list4_" + rowId + "_t").getDataIDs();
console.log("ri: "+rowId+". sdlEXP:" + sdata.length);
});
},
subGridRowExpanded: function (subgrid_id, row_id)
{
var subgrid_table_id, pager_id;
// gwdth = $('div').width();
subgrid_table_id = subgrid_id + "_t";
pager_id = "p_" + subgrid_table_id;
console.log("sqt_id: "+subgrid_table_id);
$("#" + subgrid_id).html("<div style='margin-left:0px'><table id='" + subgrid_table_id + "' class='scroll'><tr><td>Testing</td></tr></table><div id='" + pager_id + "' class='scroll'></div></div>");
jQuery("#" + subgrid_table_id).jqGrid({
colNames: ['ContractNo', 'ParentName', 'ItemTypeName', 'ItemValue', 'ParentItemID', 'ItemID'],
colModel:
[
{ name: 'ContractNo', index: 'ContractNo', hidden: true },
{ name: 'ParentName', index: 'ParentName', hidden: true },
{ name: 'ItemTypeName', index: 'ItemTypeName'/*, width: gwdth/2 - 102*/},
{ name: 'ItemValue', index: 'ItemValue'/*, width: gwdth/2*/},
{ name: 'ParentItemID', index: 'ParentItemID', hidden: true },
{ name: 'ItemID', index: 'ItemID', hidden: true }
],
height: 'auto',
rowNum: 20,
// sortorder: "asc",
shrinkToFit: true,
url: getDataUrl + "?subgrid=" + getCell(row_id),
// datastr: topicjson,
// datatype: "jsonstring",
datatype: "json",
treeGrid: true,
treeGridModel: "adjacency",
ExpandColumn: "ItemTypeName",
// sortname: 'ParamNameEN',
//loadonce: true,
ExpandColClick: true,
// SortTree:-1,
// sortable: true,
viewrecords: true,
url: getDataUrl + "&subgrid=" + getCell(row_id),
});
},
loadComplete: function() {
var sn = 150;
var sv = 400;
var rowIds = $("#list4").getDataIDs();
console.log("rids:" + rowIds.length);
$.each(rowIds, function (index, rowId)
{
console.log("#list4_" + rowId + "_t");
var sdata = $("#list4_" + rowId + "_t").getDataIDs();
console.log("sdl:" + sdata.length);
});
}
});
jQuery(“#list4”).jqGrid({
url:getDataUrl,
数据类型:“json”,
自动宽度:false,
shrinkToFit:是的,
高度:“自动”,
有一次:是的,
colNames:['ContractNo','ParentName','ItemTypeName','ItemValue','ParentItemID','ItemID'],
colModel:
[
{name:'ContractNo',index:'ContractNo',hidden:true},
{name:'ParentName',index:'ParentName',hidden:true},
{name:'ItemTypeName',index:'ItemTypeName'/*,宽度:gwdth/2*/},
{name:'ItemValue',index:'ItemValue'/*,宽度:gwdth/2*/},
{name:'ParentItemID',index:'ParentItemID',hidden:true},
{name:'ItemID',index:'ItemID',hidden:true}
],
子网格:对,
标题:“合同项目”,
子网格选项:
{
“expandOnLoad”:真
},
gridComplete:函数(){
var rowIds=$(“#list4”).getDataId();
$.each(行ID,函数(索引,行ID){
$(“#列表4”).expandSubGridRow(rowId);
var sdata=$(“#列表4"+rowId+“#t”).getDataIDs();
console.log(“ri:+rowId+”.sdlEXP:+sdata.length);
});
},
subGridRowExpanded:函数(subgrid\u id,row\u id)
{
var子网格表id、寻呼机id;
//gwdth=$('div').width();
子网格\表\ id=子网格\ id+“\ t”;
pager_id=“p_”+子网格\u表\u id;
日志(“sqt\U id:+子网格表\U id”);
$(“#”+子网格_id).html(“测试”);
jQuery(“#”+子网格_表_id).jqGrid({
colNames:['ContractNo','ParentName','ItemTypeName','ItemValue','ParentItemID','ItemID'],
colModel:
[
{name:'ContractNo',index:'ContractNo',hidden:true},
{name:'ParentName',index:'ParentName',hidden:true},
{name:'ItemTypeName',index:'ItemTypeName'/*,宽度:gwdth/2-102*/},
{name:'ItemValue',index:'ItemValue'/*,宽度:gwdth/2*/},
{name:'ParentItemID',index:'ParentItemID',hidden:true},
{name:'ItemID',index:'ItemID',hidden:true}
],
高度:“自动”,
rowNum:20,
//分拣员:“asc”,
shrinkToFit:是的,
url:getDataUrl+“?子网格=“+getCell(行id),
//datastr:topicjson,
//数据类型:“jsonstring”,
数据类型:“json”,
特雷格里德:没错,
树模型:“邻接”,
ExpandColumn:“ItemTypeName”,
//sortname:“ParamNameEN”,
//有一次:是的,
ExpandColClick:true,
//SortTree:-1,
//可排序:是的,
viewrecords:是的,
url:getDataUrl+“&子网格=“+getCell(行id),
});
},
loadComplete:function(){
var-sn=150;
var sv=400;
var rowIds=$(“#list4”).getDataId();
log(“rids:+rowIds.length”);
$.each(行ID,函数(索引,行ID)
{
console.log(“#list4"+rowId+“"t”);
var sdata=$(“#列表4"+rowId+“#t”).getDataIDs();
console.log(“sdl:+sdata.length”);
});
}
});
控制台有以下输出:
//负载复合材料
rids:2-这意味着我们在主网格中有2行。它是
对
但当我尝试获取子网格行时,它返回0
sdl:0-为什么
但所有数据都已加载
如果我无法在loadComplete中从子网格获取数据,那么如何在网格加载后获取子网格数据
我必须使用什么事件?首先,在jqGrid中有许多不同的方法来实现子网格。您应该发布有关实现的详细信息
通常情况下,在填充主网格时,只需在colModel
和网格中添加一列名为“subgrid”。该列仅包含一个图标(“+”,例如带有类“ui icon plus”
),该图标使用用户打开子网格。仅当用户单击“+”符号时,将添加并填充带有子网格的新附加行
因此,在主网格的loadComplete
中找不到任何子网格,因为目前没有子网格
显示如何获取当前打开的子网格。您可以在自定义导航器按钮内、在onsetrow
内或在许多其他回调内使用此按钮,但当然不能在loadComplete
内使用
你应该更详细地解释你真正需要什么。可能您实现了加载网格的所有数据,包括所有子网格的数据例如,请参见。在这种情况下,您可以访问所有子栅格中的所有数据
已更新:我仍然不明白您想做什么,但无论如何,您发布的代码都有重要问题。您忘记了对服务器的Ajax请求将被异步处理。因此,如果您只是从url:getDataUrl+“&subgrid=“+getCell(row_id)
开始加载子网格,并不意味着子网格已经在主网格的loadComplete
中看到。此外,您应该了解调用expandSubGridRow
方法只会模拟单击事件(请参阅),该事件的处理也可以是异步的
我想再次向您介绍如何一次加载所有子网格数据。通过这种方式,您可以解决许多问题并减少到服务器的不必要的往返。可能@user1885734:如果你想发布额外的代码,你应该在