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

如何在ShieldUI ASP.NET MVC的Grid中添加复选框及全选功能

ShieldUI ASP.NET MVC Grid 复选框+全选功能实现方案

复选框全选效果参考

1. 配置Grid复选框列

在Grid的列定义中新增自定义复选框列,表头放置全选框,每行放置行选中框:

@(Html.ShieldGrid()
    .Name("customGrid")
    .Columns(columns =>
    {
        // 复选框专属列
        columns.Add()
            .Width("50px")
            .HeaderTemplate("<input type='checkbox' id='selectAllCb' />")
            .Template("<input type='checkbox' class='row-cb' value='<#= 主键字段名 #>' />");
        // 原有业务列
        columns.Add().Field("Field1").Title("列1");
        columns.Add().Field("Field2").Title("列2");
    })
    // 保留你原有其他Grid配置(数据源、分页、排序等)
    .Events(ev => ev.DataBound("gridDataBoundHandler"))
)

2. 编写交互逻辑JS代码

实现全选、反选、行选中联动全选框状态的逻辑:

// 全选框点击事件
$(document).on('change', '#selectAllCb', function() {
    const checkedStatus = $(this).prop('checked');
    $('.row-cb').prop('checked', checkedStatus);
    // 可在此处添加选中后的业务逻辑,比如收集选中ID
    collectSelectedIds();
});

// 行复选框点击事件,联动更新全选框状态
$(document).on('change', '.row-cb', function() {
    const totalRow = $('.row-cb').length;
    const checkedRow = $('.row-cb:checked').length;
    $('#selectAllCb').prop('checked', totalRow === checkedRow);
    collectSelectedIds();
});

// Grid数据加载完成后重置选中状态
function gridDataBoundHandler() {
    $('#selectAllCb').prop('checked', false);
}

// 工具方法:收集所有选中行的主键ID
function collectSelectedIds() {
    const ids = [];
    $('.row-cb:checked').each(function() {
        ids.push($(this).val());
    });
    // 此处可处理选中的ID,比如提交给后端
    return ids;
}

3. 可选扩展:点击整行联动选中复选框

如果需要点击行任意位置都能触发选中,可补充如下逻辑:

$(document).on('click', '.sui-grid tr:not(.sui-grid-header-row)', function(e) {
    // 避免点击复选框本身时重复触发
    if (!$(e.target).hasClass('row-cb')) {
        $(this).find('.row-cb').prop('checked', !$(this).find('.row-cb').prop('checked')).trigger('change');
    }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 21:48:02