【发布时间】:2011-10-15 23:02:01
【问题描述】:
我有一个带有一些用户控件的 aspx 页面,所有这些都包含一个复选框。
当用户控件被添加到页面时复选框被选中。 复选框设置为自动回发
我需要的是当自动回发发生时,用户控件将消失。
首先我加载我的用户控件: 我将它们作为行加载到表中,并为它们的 ID 值赋予它们所代表的实体的值
private void Load_Products(List<AppProduct> user_products)
{
HtmlTableRow row = null;
foreach(AppProduct p in user_products)
{
row = new HtmlTableRow();
tbl_products.Rows.Add(row);
CartProduct prd = (CartProduct)Page.LoadControl("~/UserControls/CartProduct.ascx");
prd.Title = p.Title;
prd.Price = p.Price.ToString();
prd.Pid = p.Pid.ToString();
prd.ID = p.Pid.ToString();
prd.State = 2;
prd.Product_Checked += new EventHandler(prd_Product_Checked);
HtmlTableCell cell = new HtmlTableCell();
cell.Controls.Add(prd);
row.Cells.Add(cell);
}
}
CartProduct UserControl 代表 AppProduct 实体
现在我删除产品(用户控件)的方法是将其从列表中删除,如下所示:
void prd_Product_Checked(object sender, EventArgs e)
{ // this removes the product from the same list that the load products function gets
ProductChangedEventArgs args = (ProductChangedEventArgs)e;
cart.RemoveProduct(uid, args.Pid);
Response.Redirect("~/Pages/cart.aspx");
}
现在这可行,但是必须回发然后再次重定向以生效从列表中删除发生在回发上似乎是错误的,但会生效 仅在下一页加载时,重新加载列表时。 如果我可以在回帖的页面加载期间如何从列表中删除该项目 无需再次重新定向。
有什么想法可以跳过重定向吗? 我想也许可以通过回发发送参数,但我不知道这是否可能,因为我可以在调用 Load_Products 之前发送产品 ID 并将其从列表中删除。
提前致谢 埃兰。
【问题讨论】: