在应该删除的时候删除记录't

deleting record when it shouldn't

本文关键字:删除 记录 候删除      更新时间:2023-09-26

我正在尝试显示一个确认框,它与Confirm完美配合,但与我的自定义消息框不配合

这是有效的,

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        LinkButton link = (LinkButton)e.Row.Cells[4].Controls[2];
        if (link != null)
        {
            link.OnClientClick = "return confirm('Do you really want to delete?')";
        }
    }
}

但当我把这个放在上时

link.OnClientClick = "ConfirmationBox()";

 function ConfirmationBox() 
    { 
    $.blockUI({ message: $('#question'), css: { width: '275px' } 
    }); 
    }

它显示消息框,但也删除了我的记录:'(

还困惑吗?看看这个,

显示消息框的命令字段

编辑

<script type="text/javascript">
 $(document).ready(function() { 
 $('#yes').click(function() { 
        $.unblockUI(); 
        return true;
    });
    $('#no').click(function() { 
        $.unblockUI(); 
        return false; 
    }); 
}); 
 </script>

查看两个OnClientClick事件之间的差异。正常工作的返回值,而不正常的则不返回。

单击按钮时,将执行按钮操作。单击操作也会执行。但是,如果单击操作返回false,则按钮的操作将被取消。更改

link.OnClientClick = "ConfirmationBox()";

link.OnClientClick = "return ConfirmationBox()";

如果动作未被确认,则使CCD_ 3返回false。

第二个选项很可能不返回false,这就是为什么在任何情况下都会删除您的记录。您可以将其更改为:进行验证

function ConfirmationBox() 
    { 
      $.blockUI({ message: $('#question'), css: { width: '275px' }}); 
      return false;
    }

这并不是说会阻止删除记录,但也不会让你删除它。你需要一些返回UI控件结果的东西。

你也应该修改链接:

link.OnClientClick = "return ConfirmationBox()";

正如Jim所说,你必须有

link.OnClientClick = "return ConfirmationBox()";

ConfirmationBox应始终返回false。您需要有另外一个按钮来执行删除操作,如果用户按下"是"按钮,则需要触发该按钮的单击事件。我希望这是有道理的。