You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在gridComplete事件后移除jqGrid colModel指定单元格的classes类

jqGrid移除colModel设置的classes类解决方案

你的核心需求是在gridComplete事件触发后,移除colModel中指定列(如OrderNo、OrdOrdMstCd)的link类,现有代码存在几个需要调整的地方,以下是修正后的实现:

问题点说明

  1. gridComplete的回调函数没有参数,你写的rowId,properties是错误的;
  2. 使用setCell第四个参数设置新class会直接替换原有class,而非移除目标类;
  3. rowData未用var声明,会变成全局变量,存在风险;
  4. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 15:40:28