C# 通过回发到页面传递参数
iv'e有一个带有一些用户控件的aspx页面,所有这些控件都包含一个复选框 将用户控件添加到页面时,将选中该复选框。 该复选框设置为“自动回发” 我需要的是,当自动回发发生时,用户控件将消失 首先,我加载用户控件的方式是: 我将它们作为行加载到表中,并为它们的ID值提供它们所表示的实体的值C# 通过回发到页面传递参数,c#,asp.net,postback,C#,Asp.net,Postback,iv'e有一个带有一些用户控件的aspx页面,所有这些控件都包含一个复选框 将用户控件添加到页面时,将选中该复选框。 该复选框设置为“自动回发” 我需要的是,当自动回发发生时,用户控件将消失 首先,我加载用户控件的方式是: 我将它们作为行加载到表中,并为它们的ID值提供它们所表示的实体的值 private void Load_Products(List<AppProduct> user_products) { HtmlTableRow row = nul
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);
}
}
现在,这是可行的,但是为了生效,必须回发然后再次重定向似乎是错误的。从列表中删除发生在回发上,但会生效
仅在下一页加载时,当列表重新加载时。
如果我能告诉你如何在回发的页面加载过程中从列表中删除该项目
不用再重新导演了
有没有办法跳过重定向?
我想可能会通过回发发送参数,但我不知道这是否可行,因为这样我就可以在调用Load_Products之前发送产品id并将其从列表中删除
提前谢谢
eran.代替重定向,为什么不使用更新的产品列表再次调用Load\u Products?好的,这是个好主意,但这样做有一个问题,即使我调用Load_Products,它也会加载我列表中所有剩余的产品。未刷新的页面仍然显示上次加载页面中加载的用户控件的早期事件。@继续:假设我有2个用户控件:Something 1 Something 1_date[选中]Something 2 Something 2_date[选中]现在我将从列表中删除一些内容1(取消选中他),并调用Load\u Products。结果将是一些内容1一些内容1\u date[未选中]一些内容2\u date[选中]一些内容2一些内容2\u date[选中]它会将项目添加到未刷新的页面。该页面不知道列表已被更改,它只是根据列表的内容加载用户控件。@eran:您正在将CartProduct控件添加到tbl_产品(即:tbl_products.Rows.add(row);)。这是否正确?如果是这样,只需清除tbl_products中的现有行-tbl_products.rows.clear()。将此行添加为Load_products的第一行。这有意义吗?没有。我之前评论过,虽然这在逻辑上是一个好主意,但在处理asp页面时,更改(到页面)只有在页面加载时才会发生,当它再次读取列表并相应地加载产品时。@eranotzer:对不起,我一定是误解了什么。这是我对页面逻辑的理解:1:在第一个页面加载时,您称为加载产品。2:然后用户与一个控件交互,该控件抛出prd\U产品检查方法3:在pos上tback,检查Page.IsPostBack,不重新加载控件。4:调用prd_Product_Checked方法,然后从购物车中删除产品。5:然后再次调用Load_Products。是否正确?
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");
}