【问题标题】:jqgrid: How to format master/detail grids?jqgrid:如何格式化主/详细网格?
【发布时间】:2025-12-25 21:30:16
【问题描述】:

我有一个带有子网格的 jqgrid。

我正在尝试对主网格和细节网格应用不同的颜色。我有两个规则:第一个是交替奇数和成对颜色,另一个是根据特定字段的值将特定 CSS 应用于行。

master 和 details 网格,包含以下 gridComplete 函数,其中显然 childnodes 索引不同导致表包含不同的字段:

gridComplete: function () {
            var _rows = $(".jqgrow");
            for (var i = 0; i < _rows.length; i++) {
                _rows[i].attributes["class"].value += " " + _rows[i].childNodes[4].textContent;
                _rows[i].attributes["class"].value += " " + _rows[i].childNodes[4].innerText;
            }
           applyZebra("jqTicketgrid");
        }

applyZebra 函数提供了交替奇数/对颜色,并且已经在另一个不包含子网格的网格上进行了测试。 作为记录,我在本论坛的其他已解决问题中找到了上述解决方案,并且都适用于“简单”jqgrids(不是主/详细信息)。

问题 仅当我单击以展开详细信息行时,主网格才被格式化,而详细子网格永远不会交替颜色,也不会根据单元格内容应用格式...

我哪里错了? Pheraps 我必须拦截另一个不是 gridComplete 的事件?否则对于 grid&subgrids 就不可能使用 _rows[x] & childNodes[y] 属性?

如果需要,请要求澄清,谢谢。

提前致谢!

【问题讨论】:

    标签: jqgrid formatting rows master-detail subgrid


    【解决方案1】:

    我想您的代码中的错误是您使用$(".jqgrow") 而不是$(".jqgrow", this) 其中this 内部gridComplete 将是网格的&lt;table&gt; 的DOM 元素或子gid(我想你用grid as subgrid)。

    此外,我不建议您使用当前代码。使用cellattr 更加有效和简单。 rawObject 参数允许您访问当前行的所有其他单元格。在the answer 你会找到一个实现的例子。

    【讨论】:

    • 谢谢@Oleg!我尝试使用 $(".jqgrow", this) 进行修改,但它仍然不起作用。关于 cellattr,我正在努力让它发挥作用,我同意你的有趣考虑。但我无法让它工作。请给我一个例子好吗?我什至尝试将此代码放入网格定义中,但它不起作用: cellattr: function (rowId, cellValue, rawObject, cm, rdata) { return 'class="A"'; } 再次感谢!
    • 好的。我成功地让它工作仅用于单元格:我将 cellattr 放入 colmodel 中,只是为了测试:cellattr: function (rowId, tv, rawObject, cm, rdata) { return 'class="A"'; } 并且它可以工作! 请您解释一下如何在整行中添加课程? 非常感谢@Oleg!
    • @Larry:我想我误解了你的问题。我建议here 引入rowAttr,这将类似于cellattr,但用于整行而不是列。您现在可以使用的更多是this
    • 谢谢!我正在考虑等待 rowAttr 引入...我不喜欢该解决方案,我担心性能不佳...您如何看待混合解决方案?我的意思是,在我的情况下,使用 cellattr 来评估 cellvalues,然后将类应用于该行......你认为它可能和/或更高性能吗?请问您能给我一个解决方案吗?再次感谢,你是最棒的!
    • @Larry: 你试过从the answer 转换成the demo 吗?它应该非常接近您的需要。我相信您可以修改演示以实现您所需要的。问题是它可能有很多方法可以解决您的问题。如果您使用$(".jqgrow", this),您在开始时所做的方法也应该有效。如果你一开始没有成功,你应该调试并找出错误。它应该可以工作。