UpdatePanel中的按钮需要点击两次才能触发
我正在使用VB.NET和Webforms与MS AJAX。UpdatePanel中的按钮需要点击两次才能触发
我在MS AJAX更新面板中有一个按钮。当页面被加载时,按钮的可见性被声明性地设置为'false'。
用户选中了一个复选框(同样在UpdatePanel中)后,我将该按钮的可见性设置为true,并且按预期显示。
但是,用户必须点击按钮两次才能发生任何事情。第一次点击只是将焦点放在按钮上。需要再次点击以获得回发(视觉验证和断点验证)
任何想法为什么这可能是?
非常感谢!
Anthony
您是否在页面上有动态显示的验证器?
如果显示验证器并且鼠标按下按钮,验证器可以将按钮从鼠标下方推出,因此当您抬起手指时,实际上并不会导致单击事件触发。
如果是这种情况,可以通过将验证器的display属性设置为static来解决此问题。
其他的想法:
是否有任何JavaScript按钮的客户端运行的onclick,onmousedown事件,onmouseup?
你是否动态地将此按钮添加到页面?
您是否将CheckBox
的AutoPostBack
属性设置为True
或False
?如果它设置为true,则可能在单击按钮时出现异步回发。
它必须是来自第三方控件干扰的JavaScript。 – Anthony 2009-10-08 14:50:01
我在IE6和Firefox 3.5中测试了它,它对我来说工作正常。你的配置不同吗?
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="True" OnCheckedChanged="CheckBox1_CheckedChanged" Text="Checkbox" />
<asp:Button ID="Button1" runat="server" Text="Button" Visible="False" OnClick="Button1_Click" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
Button1.Visible = CheckBox1.Checked;
}
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = DateTime.Now.ToString();
}
感谢您的尝试。它一定是第三方文件上传控制,这是不同的东西。 – Anthony 2009-10-08 14:51:47
狂猜:你是否检查页面的Init或Load阶段复选框的值?由于页面循环,复选框控件将不会设置其重新发布的值,并且会显示为未选中状态。只有在第二次回发中,您的代码才能正确查看检查的状态(从视图状态加载)并显示按钮。
在复选框更改事件或PreRender中设置可见性。
感谢您的输入。
我在UpdatePanel中有一个3rd Party File Upload control以及按钮,这似乎会导致与按钮冲突。
我已经诉诸解决与JavaScript的问题。我添加下面的方法靠近页面的顶部:
<script language="javascript" type="text/javascript">
function DisplayImportButton() {
document.getElementById('<%= btnImport.ClientId %>').style.visibility = "visible";
}
</script>
我以下内容添加到页面的底部,这样的按钮在开始总是隐藏:
<script language="javascript" type="text/javascript">
var elem;
elem = document.getElementById('<%= btnImport.ClientId %>');
if (elem) {
elem.style.visibility = "hidden";
}
</script>
在处理程序的复选框的选中状态的变化我说:
ScriptManager.RegisterClientScriptBlock(Me, GetType(Page), "ImportButtonScript", _
"DisplayImportButton();", True)
亲切的问候
页面是否回发的杉木st点击,还是只在浏览器中获得焦点? – 2009-10-07 15:27:10