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

本文关键字:按钮 执行 然后 NET ASP | 更新日期: 2023-09-27 17:54:06

好的,我希望我能解释清楚。

我的页面上有一个或多个第三方上下旋转器+文本框控件,这些控件是黑框,我无法更改它们的源

我希望用户改变UpDownControl内容选择一个数量,然后点击日历按钮,这将:

  1. 添加所有Up/Down框的数量
  2. 调用一个javascript弹出窗口来显示一个日历,在url "…calendar.asp?qty=5"中显示步骤1的计数。

我的问题是在同一个点击中执行两个步骤。现在我只要点击一次按钮就可以了项目,并将它们添加到弹出字符串,然后我必须第二次单击它,以实际执行JS弹出窗口。

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

到目前为止,这是我所做的基本工作——

在我的页面:

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

后面的代码:

public void btnPrepCal_Click(object sender, EventArgs e)
{
StringBuilder sbParams = new StringBuilder();  
int TotalQty = 0;
int basketItemCount = 0;
int rowIndex = 0;
string Sku = string.Empty;
foreach (GridViewRow varRow in VariantGrid.Rows)
{
    int qnty = GetControlValue(varRow, "Quantity", 0);
    if (qnty > 0)
    {
        basketItemCount++;
        string optionList = (string)VariantGrid.DataKeys[rowIndex].Value;
        ProductVariant variant = _VariantManager.GetVariantFromOptions(optionList);
        if (variant != null)
        {
            BasketItem basketItem = GetBasketItem(optionList, varRow);      
            if (basketItem != null)
            {
                TotalQty += basketItem.Quantity;                    
                Sku = variant.Sku;                          
            }
        }
    }
    rowIndex++;
}
if(Sku.Length > 4) Sku = Sku.Substring(0,4);
sbParams.Append(string.Format("?sku={0}&Qty={1}", Sku, TotalQty));
string popup = string.Empty;
popup = string.Format("window.open('http://trustedtours.org/store/egalaxycalendar.asp{0}','Reservation Calendar','width=265,height=465')",sbParams.ToString());
btnPrepCal.OnClientClick = popup;

}

我是。net和web编程的新手,所以我可能会完全倒退,所以任何帮助都是感激的。如果你不清楚我想做什么或者怎么做,我道歉。如果你需要更多的信息,请问-文件的其余部分是很多购物车的胡言乱语,所以我没有,我希望这是足够的。

---- update ----查看引用的页面后,我得到:

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());

我相信这是添加后,我设置弹出窗口的值在我的点击处理程序的底部附近,删除OnClientClick部分,对吧?

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

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

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

本页有一些很好的例子:http://dotnetslackers.com/articles/aspnet/JavaScript_with_ASP_NET_2_0_Pages_Part1.aspx

Ken是正确的。为了补充他的答案并澄清为什么你的代码工作-你正在分配按钮的点击处理程序来做一个弹出,但只有被点击之后。这就是为什么你只在第二次点击后才看到弹出窗口——第一次点击处理程序时没有。