如何在gridComplete事件后移除jqGrid colModel指定单元格的classes类
jqGrid移除colModel设置的classes类解决方案
你的核心需求是在gridComplete事件触发后,移除colModel中指定列(如OrderNo、OrdOrdMstCd)的link类,现有代码存在几个需要调整的地方,以下是修正后的实现:
问题点说明
gridComplete的回调函数没有参数,你写的rowId,properties是错误的;- 使用
setCell第四个参数设置新class会直接替换原有class,而非移除目标类; rowData未用var声明,会变成全局变量,存在风险;getRowData返回的字段值是字符串类型,和数字1比较时建议统一类型。
修正后的代码
colModel:[ {name:'OrderDate', width:70, align:'center'}, {name:'OrderNo', width:70, align:'center', classes: 'link'}, {name:'OrdOrdMstCd', width:100, align:'center', classes: 'link'}, {name:'UserID', hidden:true} ], gridComplete: function() { // 获取所有行ID var rowIds = $("#grid").jqGrid("getDataIDs"); $.each(rowIds, function(idx, rowId) { // 获取当前行数据,注意声明变量 var rowData = $("#grid").getRowData(rowId); // 统一类型比较,这里转成数字判断 if(Number(rowData.UserID) === 1) { // 直接操作DOM移除指定类 $("#" + rowId + "_OrderNo").removeClass("link"); // 如果需要同时处理OrdOrdMstCd列,同理: // $("#" + rowId + "_OrdOrdMstCd").removeClass("link"); } }); }
关键细节说明
- jqGrid的单元格DOM ID规则是
行ID_列名,直接通过这个ID定位单元格元素,用jQuery的removeClass可以精准移除指定类; - 如果需要保留单元格原有其他类(比如align对应的布局类),直接用
removeClass的方式最稳妥; Number(rowData.UserID)确保类型统一,避免字符串"1"和数字1比较时的潜在逻辑问题。
内容的提问来源于stack exchange,提问作者King Henry
相关产品推荐
相关产品推荐

