我有一个按钮加了:
Button4.Attributes["onClick"] = "javascript:return confirm('已生成过付款,确认要重新生成吗?(选[是]重新生成付款,选[否]打开已有的付款表)');";然后我在BTCreate按钮中间要处理: 
protected void BTCreate_Click(object sender, EventArgs e)
    {
                  
             //上面省略有一段代码判断其他条件...
             if (!string.IsNullOrEmpty(icOAHttp))
            {
                    inRun = 0 ;
                    [激活Button4的CLICK事件,以便弹出选择提示框]
             }
              if (string.IsNullOrEmpty(icOAHttp) && !String.IsNullOrEmpty(ilSel) || inRun == 1) 
            {
                      [执行重新生成付款的过程]
            }     }
Button4的 Button4_Click代码有   inRun = 1;请问上面   [激活Button4的CLICK事件,以便弹出选择提示框] 的代码怎么写,或怎么解决这个弹出选择提示框且选择后依选择的什么按钮来执行不同的过程的问题?

解决方案 »

  1.   

    Button4.click+=new eventhandler();不行嘛
      

  2.   

      [激活Button4的CLICK事件,以便弹出选择提示框]脚本事件发生在客户端,服务器端不需要任何处理,这个和c/s的不同Button4.Attributes["onClick"] = "javascript:return confirm('已生成过付款,确认要重新生成吗?(选[是]重新生成付款,选[否]打开已有的付款表)');";已经让浏览器在 ["onClick"] 的客户端工作的时候执行了
      

  3.   

    不行呀,我是要在一个按扭的代码中间判断了其他条件后才需要激活Button4的Click()事件.
      

  4.   

    在客户端实现吧,就是
    <asp:button id="btn" runat="server" text="添加" OnClientClick="{if(confirm('已生成过付款,确认要重新生成吗?(选[是]重新生成付款,选[否]打开已有的付款表'))return true;return false;}" OnClick=""/>
    即可!这样当你选择确定时返回的是true 于是会执行OnClick事件,当你点击取消时confirm返回false就不执行OnClick事件了
      

  5.   

    我要的效果是这样的,我在BTCreate按钮里有一个过程,在过程前部份判断一些值无误后,需要弹出一个提示框,问用户是打开已有的付款表还是要重新新增付款表?  
    注: 不能是在按钮在一开始就弹出提示框.
      

  6.   

    给你一个例子:
    <body>
        <form id="form1" runat="server">
        <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
                </ContentTemplate>
                <Triggers>
                </Triggers>
            </asp:UpdatePanel>
            <asp:Button ID="Button2" runat="server" Text="Button" OnClick="Button2_Click" />
            <asp:Button ID="Button3" runat="server" Text="Button" OnClick="Button3_Click" />
        </div>
        
        </form>
    </body>
    </html>
    <script language="javascript" type="text/javascript">
    function  ChkIt()
    {
        if(confirm('已生成过付款,确认要重新生成吗?(选[是]重新生成付款,选[否]打开已有的付款表)'))
        {
            document.getElementById("Button2").click();//Button1在后台执行"重新生成付款操作"
        }
        else
        {
            document.getElementById("Button3").click();//Button2在后台执行"打开已有付款表操作"
        }
    }
    </script>cs:    protected void Button1_Click(object sender, EventArgs e)
        {
            ScriptManager.RegisterClientScriptBlock(UpdatePanel1, UpdatePanel1.GetType(), "sysinfo", "ChkIt()", true);
        }
        protected void Button2_Click(object sender, EventArgs e)
        {
            //执行"重新生成付款操作"...
        }
        protected void Button3_Click(object sender, EventArgs e)
        {
           //执行"打开已有付款表操作"...
        }
      

  7.   


    谢谢,我按你的修改了我的代码,但是在调试时没有执行那个提示框,且 ScriptManager.RegisterClientScriptBlock(UpdatePanel1, UpdatePanel1.GetType(), "sysinfo", "ChkIt()", true);语句也是正常执行的.
      

  8.   

    //现在可以弹出来了,但报错
        <script language="javascript" type="text/javascript">
            function ChkIt() {
                if (confirm('已生成过付款,确认要重新生成吗?(选[是]重新生成付款,选[否]打开已有的付款表)')) {
                    document.getElementById("Button4").click(); //Button1在后台执行"重新生成付款操作"
                }
            } 
           <asp:Button ID="BTCreate" runat="server" Text="生成付款表" 
                        Height="32px" Width="82px" Enabled="False" onclick="BTCreate_Click" />
            <asp:Button ID="Button4" runat="server" onclick="Button4_Click" Enabled="False" 
                Width="16px" />            if (!string.IsNullOrEmpty(icOAHttp))
                {
                    inRun = 0;
                    ScriptManager.RegisterClientScriptBlock(UpdatePanel1, UpdatePanel1.GetType(), "sysinfo", "ChkIt()", true);
     
                }
    上面是部份代码
    document.getElementById("Button4").click(); 
    的执行到这里时报错
    Microsoft JScript 运行时错误: 'document.getElementById(...)' 为空或不是对象
      

  9.   

    楼主你的逻辑是winform的逻辑,web里不应该这么实现的,把这个函数分成俩部分,
      

  10.   

    document.getElementById("Button4").click(); 这里的Button4  是你要执行"重新生成付款操作"或者“打开已有付款表操作"的按钮的ID比如<asp:Button ID="btnAgain" runat="server" Text="Button" OnClick="Button2_Click" />执行重新生成,
    那么这里就是 btnAgain
      

  11.   

    <asp:Button id="BTCreate" OnClientClick="return confirm('已生成过付款,确认要重新生成吗?(选[是]重新生成付款,选[否]打开已有的付款表)');" 
    Text="Click Me" runat="server" OnClick="BTCreate_Click" />后台代码:
    然后我在BTCreate按钮中间要处理:  
    protected void BTCreate_Click(object sender, EventArgs e)
      {
        
      //上面省略有一段代码判断其他条件...
      if (!string.IsNullOrEmpty(icOAHttp))
      {
      inRun = 0 ;
      [激活Button4的CLICK事件,以便弹出选择提示框]
      }
      if (string.IsNullOrEmpty(icOAHttp) && !String.IsNullOrEmpty(ilSel) || inRun == 1)  
      {
      [执行重新生成付款的过程]
      }
      }程序会先执行前台的onclientclick,如果这个没有通过,也不会执行后台的代码,所以后台就不用
    判断了。
      

  12.   


    主要是: 我对 [激活Button4的CLICK事件,以便弹出选择提示框] 这个不明白如何去实现
      

  13.   

    先去理解asp.net页面的生命周期以及web程序客户端和服务端的交互,之后你就会明白问题所在和解决办法了,这样才可以举一反三,解决类似问题。
    光得到几段代码,眼前的问题是解决了,但不求甚解,以后碰到类似的问题还是不知道如何做。
    我当年做了两年多web开发,但因为懒,不求甚解,对web程序没有真正理解,后来搞asp.net时,仍然不知道怎么做。后来搞懂了它的原理,什么asp.net mvc, php都很快做出产品来。
      

  14.   

    WEB开发真是让人无语,简简单单一件事,就是实现不了, 只能让用户无聊地多点击一次了
      

  15.   

    页面的流程设计不能是这样的.
    试试:Page.ClientScript.RegisterClientScriptBlock(typeof(page),"key","<script>js代码</script>");