首页 > 解决方案 > 当有多个具有相同 ID 的单元格时,如何仅删除选定的行?

问题描述

我正在设置一个存储过程以根据用户选择的选项删除特定行。存储过程接收了 2 个 id 并检查它们是否在表中。但我想不通。你能帮我吗?

我的存储过程看起来像这样

@idcliente numeric,
@codmedia numeric
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON; 
    IF (EXISTS(SELECT COD_MEDIA FROM MEIOS_CLIENTES WHERE ID_CLIENTE = @idcliente AND COD_MEDIA = @codmedia))
    BEGIN
        DELETE FROM MEIOS_CLIENTES WHERE ID_CLIENTE = @idcliente AND COD_MEDIA = @codmedia
    END     
END

数据库中的表是这样的

COD_SERVICO | ID_CLIENTE
     1            2
     26           2
     1            1
     32           1

该表有很多记录。

想象一下,如果用户选择从 ID_CLIENTE 2 中删除 COD_SERVICO 1。

编辑:

我正在通过 jquery 执行操作请求,代码如下所示:

function removeMeioCliente(idcliente ,idservico) {


    bootbox.dialog({
        message: "Irá eliminar o serviço selecionado. Deseja continuar?",
        title: "Alerta - Eliminação do Serviço",
        buttons: {

            danger: {
                label: "Cancelar",
                className: "btn-danger",
                callback: function () {
                }
            }, success: {
                label: "Continuar",
                className: "btn-success",
                callback: function () {

                    var options = {
                        url: baseurlrequest + 'cliente/deleteservico',
                        params: {
                            id2: idcliente,
                            id: idservico,
                        },
                        onsuccess: displaydeleteservico
                    }

                    $.fn.ajaxpostjson(options);

                }
            }
        }
    });
}


function displaydeleteservico(data) {
    if (data.status == 200) {
        toastr.info("Serviço eliminado com sucesso!", 'Cision Corpora');
    }

    if (data.status == 500) {
        toastr.error(data.html, 'Cision Corpora');
    }
}

在我看来,我的桌子看起来像这样。该项目是字符串,因为我正在测试是否传递了某些 ID,两者都是空的。

       <table class="table table-striped" cellspacing="0">
                            <thead>
                                <tr>
                                    <th class="th-sm">Meios do Cliente</th>
                                    <th></th>
                                </tr>
                            </thead>
                            <tbody>
                            <tbody>

                                @foreach (var item in Model.Meios)
                                {
                                    <tr>
                                        <td>
                                            @Html.Raw(item.Item3)
                                        </td>
                                        <td onclick="removeMeioCliente(@item.Item1.ToString(),@item.Item2.ToString());"><i class="fa fa-times"></i></td>
                                    </tr>
                                }
                            </tbody>
                        </table>

为什么两个ID都是空的?

编辑2:

我顶了!

如果有人想知道解决方案,我会发布代码。

在我看来,代码看起来像这样

 <td><a id="servicoidcliente" data-id="@item.Item1" onclick="removeMeioCliente(@item.Item2);"><i class="fa fa-times"></i></a></td>

并在 Jquery 中添加了一个简单的行:

var idcliente = $('#servicoidcliente').data("id");

控制器:

public ActionResult DeleteServico(string id2,string id)
        {
            var statusreq = this.StatusOk;
            var html = "";    
            try
            {
               BusinessService.Cliente.RemoverServicoCliente(id2,id);
            }
            catch (Exception ex)
            {
                statusreq = this.StatusError;
                html = ex.Message;
            }
            return Json(new
            {
                id = id,
                id2 = id2
            },
            JsonRequestBehavior.AllowGet);
        }

标签: c#sql-serverasp.net-mvctsqlstored-procedures

解决方案


这应该有效,你的问题是什么?

但是,您可以省略“if”部分,如果与您的 WHERE 条件不匹配,则删除将不执行任何操作,但不会失败。


推荐阅读