0

我有以下问题:

>>>>>>> 链接到 JsFiddle 演示 >>>>>>

我使用了折叠示例,并添加了 getItemMetadata 方法。

dataView.getItemMetadata = function (row) {
        var thtId = data[row].id;
        if (data[thtId + 1] && data[thtId + 1].indent > data[thtId].indent) {
            return { 'cssClasses': 'parentClassName' }
        }
    };

这工作正常,直到我尝试折叠和扩展我的行。比我收到以下错误(仅在扩展时):

未捕获的类型错误:无法读取未定义的属性“id”

根据我的经验,当 dataView 失去孩子的属性时,会产生此错误。我进行了更多调查,发现代码属于appendRowHtml函数(slick.grid.js#1217)。

有人对折叠功能和 getItemMetadata 有经验吗?

谢谢你!

4

1 回答 1

1

解决方案由 SlickGrid 的创建者 @Tin 持有

异常发生在“var thtId = data[row].id”中,其中“row”超出范围。您应该在访问“id”属性之前检查“data[row]”是否存在。网格要求为不存在的行提供元数据,这可能被解释为错误,但能够自定义最后一行(用于添加新条目的行)仍然很有用,所以它有点意义.

https://groups.google.com/forum/#!topic/slickgrid/65vPmzXsLMQ

于 2012-06-12T20:56:01.777 回答