如何将嵌套表添加到datatable?
我需要将一个嵌套表添加到jquery数据表的每一行(使用旧数据表)。 因此,我尝试使用datatables.net中的示例来处理子行并将其修改为我的需要,因为我需要始终显示子行,而不是单击父行。这是我用来构建的代码我的内表然后显示它..
function buildInnerTable(){ var keys = Object.keys(reportApp.gridData), len = keys.length, j = 0, prop, value; while (j < len) { prop = keys[j]; value = reportApp.gridData[prop]; detLen = value.detail.length; var rowVals = []; for(var i = 0; i < detLen; i++){ tmpRow = ""+value.detail[i].invtid+" "+ ""+value.detail[i].bf+" "+ ""+value.detail[i].qtyship+" "+ ""+value.detail[i].ordqty+" "+ ""+value.detail[i].bf+" "+ ""+value.detail[i].exttreating+" "+ ""+value.detail[i].extpriceinvc+" "+ ""+value.detail[i].misc+" "+ ""+value.detail[i].extother+" "+ ""+value.detail[i].calcext+" "; rowVals.push(tmpRow); } setTableRow(rowVals , j); j += 1; } function setTableRow(rowVals , ndx){ $("#gridTbl > tbody > tr:eq("+ ndx+ ")").after("InvtID "+ "Clss Pieces BilQty BF Treating "+ "Wood NEED NAME Other Misc Total "+ rowVals);
但是,我没有得到我需要得到的东西。 它看起来像是数据表添加一个新行,然后在新行的第一个单元格内设置新表。 但是,当我查看源代码时,这根本不是发生的事情。 它关闭前一行,然后插入新表…我附加了一个截图。 我需要的是细节显示在主项目行下面并以相同的方式对齐。 任何帮助我错了将不胜感激。
好的…终于想通了。 为了使视图正常显示,我不得不在数据表中添加一个新行,然后在该行的一侧添加我的新表。 但是,这会导致表格出现索引问题。 所以,每次添加新行之前,我都必须检查索引。 我发布工作代码,希望它能帮助别人。
function buildInnerTable(){ var keys = Object.keys(reportApp.gridData), len = keys.length, j = 0, prop, value; while (j < len) { prop = keys[j]; value = reportApp.gridData[prop]; detLen = value.detail.length; var rowVals = []; //THIS NEXT LINE IS WHERE I GET MY INDEX... var ndx = ($("tr:contains("+value.invcnbr+ ")").index()); for(var i = 0; i < detLen; i++){ tmpRow = ""+value.detail[i].invtid+" "+ ""+value.detail[i].bf+" "+ ""+value.detail[i].qtyship+" "+ ""+value.detail[i].ordqty+" "+ ""+value.detail[i].bf+" "+ ""+value.detail[i].exttreating+" "+ ""+value.detail[i].extpriceinvc+" "+ ""+value.detail[i].misc+" "+ ""+value.detail[i].extother+" "+ ""+value.detail[i].calcext+" "; rowVals.push(tmpRow); } setTableRow(rowVals,ndx); } j += 1; } } function setTableRow(rowVals,ndx){ var outerTbl = $('#gridTbl').DataTable(); var tr = $("#gridTbl > tbody > tr:eq("+ ndx+ ")"); //NOTE HOW I ADD A ROW AND THEN ADD NEW TABLE TO CELL IN THE ROW. var innerTbl = "InvtID "+ "Clss Pieces BilQty BF Treating "+ "Wood NEED NAME Other Misc Total "+ rowVals + "
"; tr.after(innerTbl).show(); }