Старый, но еще не решен.
Привет. Да. У jqGrid есть проблема с внутренними table
и td
, но есть быстрое и полезное решение. В файле jquery.jqGrid.min
(jqGrid 3.8.2 - jQuery Grid). Поместите файл в js-beutifier или получите не минимизированную версию и найдите функцию getRowData
. Затем вы должны добавить дополнительное условие для поиска foreach b("td", r).each(function (t) {
к коду b("td[id!='-1']", r).each(function (t) {
. В вашей внутренней таблице вы должны объявить <td id="-1">
. В этом случае вы исключаете свой тд из поиска в colModel
.
Скопируйте / Вставьте этот код:
getRowData: function (f) {
var j = {},
i, c = false,
e, k = 0;
this.each(function () {
var n = this,
a, r;
if (typeof f == "undefined") {
c = true;
i = [];
e = n.rows.length
} else {
r = n.rows.namedItem(f);
if (!r) return j;
e = 2
}
for (; k < e;) {
if (c) r = n.rows[k];
if (b(r).hasClass("jqgrow")) {
b("td[id!='-1']", r).each(function (t) {//fix
a = n.p.colModel[t].name;
if (a !== "cb" && a !== "subgrid" && a !== "rn") if (n.p.treeGrid === true && a == n.p.ExpandColumn) j[a] = b.jgrid.htmlDecode(b("span:first", this).html());
else try {
j[a] = b.unformat(this, {
rowId: r.id,
colModel: n.p.colModel[t]
}, t)
} catch (B) {
j[a] = b.jgrid.htmlDecode(b(this).html())
}
});
if (c) {
i.push(j);
j = {}
}
}
k++
}
});
return i ? i : j
}
Наконец, где вы хотите поместить внутреннюю таблицу, сделайте это:
<table>
<tr>
<td id="-1">
Now It's working!
</tr>
<td id="-1">
Yeah
</tr>
</tr>
</table>
Конечно, вы можете изменить атрибут id
, но я рекомендую исправить это с атрибутом html id
из-за производительности jQuery против атрибута class
.