我正在尝试显示一个确认框,它与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' }
});
}
它会显示消息框,但它也会删除我的记录:'(
仍然困惑?看看这个,
Command field showing messagebox
修改
<script type="text/javascript">
$(document).ready(function() {
$('#yes').click(function() {
$.unblockUI();
return true;
});
$('#no').click(function() {
$.unblockUI();
return false;
});
});
</script>
答案 0 :(得分:2)
查看两个OnClientClick
事件之间的差异。正常工作的那个返回一个值,而那个没有的那个。
单击该按钮时,将执行按钮操作。还会执行点击操作。但是,如果单击操作返回false,则取消按钮的操作。改变
link.OnClientClick = "ConfirmationBox()";
到
link.OnClientClick = "return ConfirmationBox()";
如果未确认操作,并使ConfirmationBox()
返回false。
答案 1 :(得分:1)
第二个选项很可能不会返回false
,这就是为什么您的记录在任何情况下都会被删除的原因。您可以通过将其更改为:
function ConfirmationBox()
{
$.blockUI({ message: $('#question'), css: { width: '275px' }});
return false;
}
这不会阻止删除记录,但也不会让你删除它。你需要能够返回UI控件结果的东西。
您还应该修改链接:
link.OnClientClick = "return ConfirmationBox()";
答案 2 :(得分:0)
正如吉姆所说,你必须拥有
link.OnClientClick = "return ConfirmationBox()";
ConfirmationBox应始终返回false。您还需要一个按钮来执行删除操作,如果用户按下是按钮,则需要触发该按钮的单击事件。我希望这是有道理的。