【问题标题】:JQGrid getCell AttiributeJQGrid getCell 属性
【发布时间】:2015-07-26 18:16:27
【问题描述】:

我想知道是否有办法在 jqGrid 中检索单元格的 rowspan 和 columnspan 属性值?我的目的是获取 currentrowspan 和 columnspan 属性值,如果需要,根据前一行的单元格值将其增加一。

我查看了所有文档,但似乎没有办法获取单元格的行跨度和列跨度等属性值。

谢谢

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    如果更改 jqGrid 的 rowspancolspan 属性以保持网格的外观正确,则应非常小心。不仅要更改一个单元格的值,还要更改多个单元格的值,以保持网格的外观正确。 The answer 提供了rowspan 的用法示例,another one 提供了colspan 的用法示例。

    如果可能,您应该遵循参考示例并在创建网格时设置rowspancolspan 属性,而不是后期更改属性。原因在于性能。如果您在 HTML 页面上更改 one 元素,那么页面上许多其他元素的位置和其他一些属性可以更改,因此 Web 浏览器需要做reflow 来验证是否需要更改.这需要时间。页面上的元素越多,更改一个元素的成本就越高。由于 jqGrid 尝试使用所有元素和属性创建网格的原因作为一个操作(请参阅gridview:true 选项)。在处理大型网格的情况下,它可以显着提高页面的性能。

    我可以通过任何方式询问您如何获取单元格并更改其属性。可能你知道 jQuery 将主要用作 DOM 元素的包装对象,它是表示或更改 HTML 页面元素的标准接口。重要的是要理解,jQuery 通常只使用一个由 all HTML 元素继承的通用 Element 接口。另一方面,还有许多其他有用的接口可用于访问 HTML 页面。 jqGrid 基于 HTML <table> 元素,它支持许多其他有用的属性(例如,参见 here)。因此,例如,如果您从 <table id="grid"></table> 创建了 jqGrid,则 $("#grid") 表示 jQuery 包装器到网格。要访问网格的行,可以使用rows 集合,访问行的单元格可以使用行的cells 集合。因此可以使用$("#grid")[0].rows[iRow].cells[iCol] 访问该行的单元格:

    var gridDom = $("#grid")[0];
    // the iRow row (1-based) and iCol
    var oldRowSpan = $(gridDom.rows[iRow].cells[iCol]).attr("rowspan");
    

    通过使用jQuery.attr,可以获取或设置单元格的任何属性(例如rowspancolspan 属性)。唯一应该考虑的事情是:不应该更改网格$("#grid")[0].rows[0] 的第一个不可见行。该行有类jqgfirstrow。该行的索引为 0。jqGrid 的其他标准行具有类 jqgrow 并且索引从 1 开始。

    【讨论】:

    • 如果后续行中的值相同,我的想法是合并单元格。因此,在 Model cellAttr 函数列中,我想我会获取单元格值并将其与上一行进行比较。如果上一行和当前行相同,那么我会将上一行的 rowSpan 设置为 2,对于当前行,将其设置为 display:none。
    猜你喜欢
    • 1970-01-01
    • 2012-10-30
    • 2012-04-16
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多