点击button1时做一些判断,然后再执行隐藏button2的事件。button2视情况弹出确认对话框。有UpdatePanel,button2事件会执行,但页面不会更新。代码如下:<head runat="server">
    <title>Untitled Page</title>
    <script type="text/javascript">
        function ButtonConfirm()
        {
            var flag = document.getElementById('<%=HiddenField1.ClientID %>');
            if(flag.value=="Y")
            {
               return confirm("are you sure?");
            }
            else
            {
               return true;
            }
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server"  />
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
                <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
                <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" style="display:none" Text="Button" OnClientClick="return ButtonConfirm();" />
                <asp:HiddenField ID="HiddenField1" runat="server" />
            </ContentTemplate>
        </asp:UpdatePanel>
    </form>
</body>
</html>    protected void Page_Load(object sender, EventArgs e)
    {
        HiddenField1.Value = string.Empty;
        Label1.Text = string.Empty;
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Random r = new Random();
        if (r.Next(0, 2) == 1)
        {
            HiddenField1.Value = "Y";
        }
        ScriptManager.RegisterStartupScript(UpdatePanel1, GetType(), "a", "document.getElementById('"+Button2.ClientID+"').click();", true);
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        Label1.Text = "asdfsdf";
    }

解决方案 »

  1.   

    本来是用ajax做的,逻辑越来越复杂,js代码越来越多,也越乱。想用updatePanel,理一下代码。
    我下面的c# code怎么没包起来?奇怪。
      

  2.   

    你用ajax来实现逻辑复杂不要紧不要写到js里,写到C#里面,最后按需求返回给js好了啊。
      

  3.   


    ScriptManager.RegisterStartupScript(Button2, this.GetType(), "ButtonConfirm", "
            function ButtonConfirm()
            {
                var flag = document.getElementById('"+HiddenField1.ClientID+"');
                if(flag.value=='Y')
                {
                   return confirm('are you sure?');
                }
                else
                {
                   return true;
                }
            }
    ", true);页面每次初始化时调用
      

  4.   


    Button2.Attributes.Add("onClick", "ButtonConfirm();");还有这个,也写page_load里
      

  5.   

    OnClientClick="return ButtonConfirm();"
    改成OnClientClick="ButtonConfirm();"
      

  6.   

    一个按钮既有客户端相应函数又有服务器端相应函数
    只有当客户端响应函数返回值为true时
    才会执行服务器端相应函数
      

  7.   

    To tomtown530 你那种写法跟我的并没二样。
    我现在的问题是能在适当的时候弹出对话框,并执行button2事件里的代码,但结果不会在页面上呈现出来!
    也就是Label1.Text   =   "asdfsdf"; 之后页面没变化。
      

  8.   

    你page_load里面添加下面代码就可以了:
    Button2.Attributes.Add("onClick", "return confirm('are you sure?')")
    如果不行你就先findcontrol之后再添加就行了!
      

  9.   

    我的有更新 但没有显示出来 用个数据控件来 绑定 就可以 如果不用 就用个label就显示出不来
      

  10.   

    page_load里不行啊,因为有时需要弹出,有时不用,在button事件里面判断.
      

  11.   


    下面这样,如何。
                  } 
            protected   void   Button2_Click(object   sender,   EventArgs   e) 
            { 
                     ScriptManager.RegisterStartupScript(UpdatePanel1,   GetType(),   "a",   "Label1.value   =   'asdfsdf'; ",   true);               
            } 
      

  12.   


    下面这样,如何。
                  } 
            protected   void   Button2_Click(object   sender,   EventArgs   e) 
            { 
                     ScriptManager.RegisterStartupScript(UpdatePanel1,   GetType(),   "a",   "Label1.value   =   'asdfsdf'; ",   true);               
            }