Angular5中DevExtreme Grid设置行样式报错:e.rowElement.css不是函数
搞定DevExtreme Grid里的
e.rowElement.css is not a function错误 嘿,这个问题我之前折腾过!报错的核心原因其实很直白:e.rowElement是原生DOM元素对象,不是jQuery包装后的实例,而.css()是jQuery独有的方法,直接调用自然会抛出类型错误。下面给你几个实用的解决思路:
方案1:用原生DOM的style属性(最推荐,不依赖额外库)
直接通过DOM元素的style属性来设置背景色,轻量又靠谱:
public setRowColor(e) { e.rowElement.style.backgroundColor = "#d6dde7"; }
方案2:如果项目已经用了jQuery,转成jQuery对象再调用
要是你的项目里已经引入了jQuery,也可以把原生DOM元素包装成jQuery对象后再用.css():
public setRowColor(e) { $(e.rowElement).css("background-color", "#d6dde7"); }
小提醒:得确保jQuery已经在Angular项目里正确配置好了,不然
$会找不到哦。
方案3:用DevExtreme官方推荐的方式定制行样式
其实DevExtreme Grid本身就提供了更规范的行样式定制方案,比如用onRowPrepared事件来统一处理,这样代码更易维护。举个例子:
先在模板里给Grid绑定事件:
<dx-data-grid [dataSource]="yourDataSource" (onRowPrepared)="handleRowPrepared($event)" > <!-- 你的列配置 --> </dx-data-grid>
然后在组件类里实现处理逻辑:
handleRowPrepared(e) { // 先判断是不是数据行,再根据你的条件筛选特定项 if (e.rowType === "data" && e.data.yourCondition) { e.rowElement.style.backgroundColor = "#d6dde7"; } }
这种方式更贴合DevExtreme的设计逻辑,后续修改样式规则也更方便。
内容的提问来源于stack exchange,提问作者OjamaYellow
相关产品推荐
相关产品推荐

