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

如何禁用NonFactors.Grid.Mvc5表头点击排序,仅点击排序按钮触发排序?

解决方案

你的stopPropagation不生效是因为NonFactors.Grid.Mvc5的排序事件默认直接绑定在表头<th>元素上,普通的事件冒泡阻止没法拦截同元素上先绑定的库原生事件,可通过以下两种方案实现需求:

方案1:JS拦截非排序按钮区域的点击

使用stopImmediatePropagation直接拦截上非排序按钮触发的点击事件,优先级高于库的原生排序事件:

// 匹配目标列表头,也可通过自定义类名匹配更精准
$('th:contains("Application")').on('click', function(e) {
  // 仅当点击目标不是排序按钮/排序按钮子元素时拦截事件
  if (!$(e.target).closest('.grid-sort').length) {
    e.stopImmediatePropagation();
    e.preventDefault();
  }
});

方案2:CSS禁用非排序按钮区域的点击响应(更简单)

先给目标列配置自定义CSS类:

columns.Add(model => model.ApplicationName)
  .Titled("Application")
  .Filterable(true)
  .Sortable(true)
  .Css("app-name-column"); // 新增自定义列类

再添加对应的CSS规则,仅允许排序按钮接收点击事件:

th.app-name-column *:not(.grid-sort) {
  pointer-events: none;
}

内容的提问来源于stack exchange,提问作者LizardKingLK

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:48:02