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

如何获取复选框选中值转为字符串并作为SQL存储过程参数传入?

如何将复选框选中值转为字符串并作为存储过程参数传入?

一、前端优化:准确收集选中的Reference No.并拼接成字符串

首先优化jTable的复选框渲染,把ref_no绑定到复选框的自定义属性中,避免依赖列位置导致的错误:

fields: {
    Tag: {
        sorting: false,
        title: function (data) {
            return '<input type="checkbox" class="chkAll">';
        },
        width: '2.5%',
        display: function (data) {
            // 将ref_no存入data属性,方便后续获取
            return `<input type="checkbox" class="chk" data-refno="${data.record.ref_no}">`;
        }
    },
    // 其他字段保持不变...
}

然后修改btnReassign的点击事件,收集所有选中的ref_no并拼接成逗号分隔的字符串:

$("#btnReassign").button().click(function () {
    // 收集所有选中的ref_no
    var selectedRefNos = [];
    document.querySelectorAll('input.chk:checked').forEach(chk => {
        var refNo = chk.getAttribute('data-refno');
        if (refNo) {
            selectedRefNos.push(refNo);
        }
    });

    // 转为逗号分隔的字符串
    var refNosStr = selectedRefNos.join(',');

    // 这里可以将字符串存入隐藏域,用于后续弹窗提交或直接调用后端接口
    $("#hdnRefNo").val(refNosStr);
    // 示例:显示重新分配弹窗
    // $("#dvReassignModalPopUp").show();
});

二、后端创建WebMethod接收参数并调用存储过程

添加一个新的WebMethod来处理重新分配请求,接收拼接好的refNos字符串以及其他需要修改的字段:

[WebMethod(EnableSession = true)]
public static object ReassignAccounts(string refNos, string newRM, string newSeniorReviewer)
{
    try
    {
        // 调用存储过程
        using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["YourConnString"].ConnectionString))
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand("sp_ReassignAccounts", conn);
            cmd.CommandType = CommandType.StoredProcedure;

            // 添加参数
            cmd.Parameters.AddWithValue("@RefNos", refNos);
            cmd.Parameters.AddWithValue("@NewRM", newRM);
            cmd.Parameters.AddWithValue("@NewSeniorReviewer", newSeniorReviewer);

            cmd.ExecuteNonQuery();
        }

        return new { Result = "OK", Message = "Accounts reassigned successfully." };
    }
    catch (Exception ex)
    {
        return new { Result = "ERROR", Message = ex.Message };
    }
}

三、SQL存储过程处理字符串参数

使用STRING_SPLIT(适用于SQL Server 2016及以上版本)拆分传入的字符串参数,更新对应账户信息:

CREATE PROCEDURE sp_ReassignAccounts
    @RefNos NVARCHAR(MAX),
    @NewRM NVARCHAR(100),
    @NewSeniorReviewer NVARCHAR(100)
AS
BEGIN
    SET NOCOUNT ON;

    -- 更新选中的账户
    UPDATE NewAccount
    SET rmName = @NewRM,
        SeniorReviewer = @NewSeniorReviewer
    WHERE ref_no IN (SELECT value FROM STRING_SPLIT(@RefNos, ','))
END

注意事项

  • 若SQL Server版本低于2016,需自定义字符串拆分函数替代STRING_SPLIT。
  • 前端可添加校验逻辑,确保至少选中一个账户后才允许触发操作。
  • 后端已使用参数化查询,无需担心SQL注入风险。

内容的提问来源于stack exchange,提问作者Jhonn Matthew Calvelo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 23:31:02