【发布时间】:2013-08-02 15:10:02
【问题描述】:
我在更新面板中有一个gridview,gridview 的第一列中有一个复选框。当我第一次创建它时,它运行良好。该复选框设置为 AutoPostBack 并导致异步回发,我可以在其中处理数据并刷新 gridview 而不会影响页面的其余部分。
但是,我需要在客户端的页面上测试某个条件,并向用户显示一个确认框,上面写着“此人不是为此设置的。确定要继续吗?'
我最初是通过在 gridview 的 RowDataBound 事件中添加一些这样的代码来做到这一点的;
CheckBox cb = (CheckBox)e.Row.FindControl("myCheckBox");
cb.Attributes.Add("onclick", "return check('" + ContactName + "');");
并且有一个类似于以下内容的javascript函数:
function check(ContactName)
{
if (document.getElementById('Listed') == false)
{
if (confirm('This person is not listed, are you sure you want to continue?'))
{
return true;
}
return false;
}
}
请忽略上面代码中的拼写错误,如果是凭记忆输入的。问题是,它有效。如果我的局部变量 Listed 为 false,它会弹出确认框。
问题是,如果您在确认框中选择“确定” - 由复选框生成的回发(应该是异步的,因为它在 ChildrenAsTriggers = true 的更新面板内)被取消。我必须在 javascript 确认后调用 __doPostback 才能发生回发。但是,我得到的是完整的回发,而不是我想要的异步回发。
所以,我的问题是,如何防止来自带有 javascript 确认的复选框的异步回发,这样,如果您在 javascript 确认中选择 Okay,就会发生异步回发。
正如我所说,目前,我可以让它工作的唯一方法是在用户点击 Okay 后进行完整的回发。
【问题讨论】:
标签: c# javascript asp.net ajax.net