C# ASP.NET计数框,然后从同一按钮执行弹出窗口

C# ASP.NET计数框,然后从同一按钮执行弹出窗口,c#,javascript,asp.net,C#,Javascript,Asp.net,好的,我希望我能解释得足够清楚 我的页面上有一个或多个第三方向上/向下微调器+文本框控件,它们是我无法更改源的黑框 我希望用户更改UpDownControl内容以选择数量,然后单击日历按钮,该按钮将: 添加所有向上/向下框的数量 调用javascript弹出窗口以在url“…calendar.asp?qty=5”中显示包含步骤1中的计数的日历 我的问题是让这两个步骤在同一次单击中执行。就目前的情况而言,我可以点击按钮一次,它就会计数 这些项目并将它们添加到弹出字符串中,然后我必须再次单击它以实际

好的,我希望我能解释得足够清楚

我的页面上有一个或多个第三方向上/向下微调器+文本框控件,它们是我无法更改源的黑框

我希望用户更改UpDownControl内容以选择数量,然后单击日历按钮,该按钮将:

  • 添加所有向上/向下框的数量
  • 调用javascript弹出窗口以在url“…calendar.asp?qty=5”中显示包含步骤1中的计数的日历
  • 我的问题是让这两个步骤在同一次单击中执行。就目前的情况而言,我可以点击按钮一次,它就会计数 这些项目并将它们添加到弹出字符串中,然后我必须再次单击它以实际执行JS弹出窗口

    代码最初是为了将计数“加载”到第二个按钮中,然后以编程方式单击它,但看起来 就像浏览器的弹出窗口,因为用户没有点击该按钮

    这是我到目前为止几乎有效的方法--

    在我的页面上:

    <asp:ImageButton ID="btnPrepCal" runat="server" Text="PrepCal" OnClick="btnPrepCal_Click" ImageUrl="~/images/Calendar.gif"/>        
    
    }

    我对.NET和web编程还不熟悉,所以我可能会完全倒行逆施,所以非常感谢您的帮助。如果不清楚我想做什么或如何做,我道歉。如果你需要更多的信息,请询问-该文件的其余部分是大量的购物车混乱,所以我遗漏了它,我希望这是足够的

    ----更新---- 查看参考页面后,我得到:

    Type cstype = this.GetType();
    ClientScriptManager cs = Page.ClientScript;             
    StringBuilder cstext1 = new StringBuilder();
    cstext1.Append("<script type=text/javascript>" + popup + "<script>");
    cs.RegisterStartupScript(cstype, "PopupCalendar", cstext1.ToString());
    
    Type cstype=this.GetType();
    ClientScriptManager cs=Page.ClientScript;
    StringBuilder cstext1=新的StringBuilder();
    cstext1.Append(“+popup+”);
    RegisterStartupScript(cstype,“PopupCalendar”,cstext1.ToString());
    
    我相信这是在我在上面单击处理程序底部附近设置了popup的值之后添加的,删除了OnClientClick部分,对吗


    点击按钮后,该弹出窗口是否应重新加载页面上的其他窗口?(我讨厌做一个新手,问一些可能很明显的问题。)

    使用这种方法,你可以实现你的目标。不要将按钮的OnClientClick方法分配给JS弹出代码,而是使用RegisterStartupScript方法将该代码设置为在重新加载页面时运行


    本页有一些很好的例子:

    您可以使用该方法实现您的目标。不要将按钮的OnClientClick方法分配给JS弹出代码,而是使用RegisterStartupScript方法将该代码设置为在重新加载页面时运行


    本页有一些很好的例子:

    肯是正确的。要添加到他的答案中并澄清代码不起作用的原因,您需要指定按钮的单击处理程序来执行弹出操作,但仅在单击按钮之后。这就是为什么您只在第二次单击后看到弹出窗口-第一次单击时处理程序不在那里。

    Ken是正确的。要添加到他的答案中并澄清代码不起作用的原因,您需要指定按钮的单击处理程序来执行弹出操作,但仅在单击按钮之后。这就是为什么您只在第二次单击后看到弹出窗口-第一次单击时处理程序不在那里。

    更新看起来是正确的。你试过了吗?我相信默认情况下,脚本会被注入页面底部(就在结束表单标记之前)。查看页面刷新后是否在HTML源代码中。如果是这样的话,可能弹出窗口被阻止了。它是一个UC,所以我希望在该控件的底部看到它。我在单击时得到刷新,但在视图源中没有它的迹象。我找到了它!如果它位于用户控件中,则需要使用ScriptManager.RegisterStartupScript调用它,并对参数进行一些轻微更改。它起作用了!非常感谢你的帮助和马特的帮助!更新看起来是正确的。你试过了吗?我相信默认情况下,脚本会被注入页面底部(就在结束表单标记之前)。查看页面刷新后是否在HTML源代码中。如果是这样的话,可能弹出窗口被阻止了。它是一个UC,所以我希望在该控件的底部看到它。我在单击时得到刷新,但在视图源中没有它的迹象。我找到了它!如果它位于用户控件中,则需要使用ScriptManager.RegisterStartupScript调用它,并对参数进行一些轻微更改。它起作用了!非常感谢你的帮助和马特的帮助!谢谢,这对我来说是一个重要的点击。谢谢,这对我来说是一个重要的点击。
    Type cstype = this.GetType();
    ClientScriptManager cs = Page.ClientScript;             
    StringBuilder cstext1 = new StringBuilder();
    cstext1.Append("<script type=text/javascript>" + popup + "<script>");
    cs.RegisterStartupScript(cstype, "PopupCalendar", cstext1.ToString());