Kendo GridView中选择下拉列表值后如何实现对应行高亮?
Kendo Grid下拉列选值后高亮当前行实现方案
首先新增自定义高亮样式,可按需调整颜色、边框等属性:
.k-grid tr.highlighted-row { background-color: #fff3cd !important; border-color: #ffeeba !important; }
单下拉列实现方式
如果只有个别下拉列需要该效果,直接在对应列的editor配置中绑定下拉的change事件即可:
$("#grid").kendoGrid({ columns: [ // 其他列配置省略 { field: "selectField", title: "下拉列", editor: function(container, options) { $("<input name='" + options.field + "'/>") .appendTo(container) .kendoDropDownList({ dataSource: ["选项1", "选项2", "选项3"], // 替换为你的下拉数据源 change: function(e) { // 获取当前下拉控件所在的表格行 const targetRow = $(e.sender.element).closest("tr"); // 可选:清除其他所有行的高亮,不需要保留多行行高亮可保留该行 $("#grid").find(".highlighted-row").removeClass("highlighted-row"); // 给当前行添加高亮样式 targetRow.addClass("highlighted-row"); } }); } } ], editable: true // 其他Grid配置省略 });
全量下拉列统一实现方式
如果Grid内所有下拉列都需要该效果,直接绑定Grid的edit事件统一处理,无需逐个修改列配置:
$("#grid").kendoGrid({ columns: [/* 按原有逻辑配置列即可,无需修改下拉列的默认配置 */], editable: true, edit: function(e) { // 检测当前编辑项是否为下拉列表 const dropdown = e.container.find(".k-dropdown").data("kendoDropDownList"); if (dropdown) { dropdown.bind("change", function(evt) { const targetRow = $(evt.sender.element).closest("tr"); targetRow.addClass("highlighted-row"); // 不需要保留多行行高亮就加下面这行 // e.sender.tbody.find(".highlighted-row").removeClass("highlighted-row"); }); } } // 其他Grid配置省略 });
补充说明
- 如果需要分页、排序、过滤操作后仍保留高亮状态,可将高亮行的唯一主键存入全局数组,在Grid的
dataBound事件中遍历数组给对应行重新添加高亮样式即可。 - 样式中的
!important用于覆盖Kendo默认的行悬浮、选中样式,不需要覆盖可自行调整样式优先级后移除。
内容的提问来源于stack exchange,提问作者Asima Mohanty
相关产品推荐
相关产品推荐

