ASP.. NET计数框,然后从同一按钮执行弹出
本文关键字:按钮 执行 然后 NET ASP | 更新日期: 2023-09-27 17:54:06
好的,我希望我能解释清楚。
我的页面上有一个或多个第三方上下旋转器+文本框控件,这些控件是黑框,我无法更改它们的源
我希望用户改变UpDownControl内容选择一个数量,然后点击日历按钮,这将:
- 添加所有Up/Down框的数量
- 调用一个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部分,对吧?
是否应该在点击按钮后重新加载页面上的其他窗口?(我讨厌作为一个新手,问一些可能很明显的问题。)
您可以使用ClientScriptManager完成您的目标。RegisterStartupScript方法。不是将按钮的OnClientClick方法分配给JS弹出代码,而是使用RegisterStartupScript方法将该代码设置为在页面重新加载时运行。
本页有一些很好的例子:http://dotnetslackers.com/articles/aspnet/JavaScript_with_ASP_NET_2_0_Pages_Part1.aspx
Ken是正确的。为了补充他的答案并澄清为什么你的代码不工作-你正在分配按钮的点击处理程序来做一个弹出,但只有在被点击之后。这就是为什么你只在第二次点击后才看到弹出窗口——第一次点击处理程序时没有。