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

调用ReinstateEmployee接口后如何保留表格选中行状态?

解决Post提交后表格选中行状态丢失问题

1. 调整控制器代码,回传选中ID列表

Post请求处理完成后,将选中的员工ID回传给视图模型,确保视图能获取到之前的选中数据:

[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult ReinstateEmployee(string btnsubmit, string btnActivate, EmployeeReinstateVM model)
{
    // 执行你的业务逻辑,比如调用ReinstateEmployee()方法
    // ...

    // 保留选中的ID列表,回传给视图
    model.selectedEmployeeId = model.selectedEmployeeId ?? new List<string>();
    // 注意:需确保视图所需的employees数据也已正确赋值(比如从数据库重新获取或保留原数据)
    // model.employees = ...;

    return View(model);
}

2. 修改视图渲染逻辑,自动标记选中行

渲染表格时,判断当前员工ID是否在选中列表中,动态添加selected类:

<table class="table table-bordered table-light">
    <tbody>
        @foreach (var item in Model.employees)
        {
            <tr class="selectable-row @(Model.selectedEmployeeId?.Contains(item.EmployeeID.ToString()) == true ? "selected" : "")" employee-id="@item.EmployeeID">
                <td>@item.EmployeeID</td>
                <td>@item.DepotName</td>
                <td>@item.EmployeeName</td>
                <td>@item.EmpLeaveDate</td>
            </tr>
        }
    </tbody>
</table>

3. 同步JS初始化状态,确保选中数组与页面一致

页面加载时,从隐藏域读取已选中的ID,初始化数组并同步行状态:

<input type="hidden" id="selectedEmployeeId" name="selectedEmployeeId" value="@(Model.selectedEmployeeId != null ? string.Join(",", Model.selectedEmployeeId) : "")">

<script type="text/javascript">
$(document).ready(function () {
    // 从隐藏域初始化选中ID数组
    var selectedIds = $("#selectedEmployeeId").val().split(",");
    var employeeIds = selectedIds.filter(id => id !== "");

    // 页面加载时标记已选中的行
    $(".selectable-row").each(function() {
        var empId = $(this).attr('employee-id');
        if (employeeIds.includes(empId)) {
            $(this).addClass("selected");
        }
    });

    $(".selectable-row").click(function () {
        $(this).toggleClass("selected");
        var employeeId = $(this).attr('employee-id');

        if ($(this).hasClass("selected")) {
            employeeIds.push(employeeId);
        }
        else {
            employeeIds = employeeIds.filter(function (id) {
                return id !== employeeId;
            });
        }
    });
    
    $("#btnSave").click(function () {
        $("#selectedEmployeeId").val(employeeIds);
    });
});
</script>

核心逻辑说明

Post回发后页面会重新渲染,通过将选中ID存入视图模型回传,让视图明确需要保留选中状态的行;同时在JS初始化时同步选中数组与页面行状态,保证后续操作的一致性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:50:14