我要实现简单的购物车,显示出要买的商品。这是我的源码,为什么repeater显示不出数据来?是我的Page_Prerender()函数的问题吗?我是把每个Button控件的Prerender事件都设成 Page_Prerender(),不对吧。那应该怎么调用它?是Page的事件吗?
namespace WebShop
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.Label Label3;
protected System.Web.UI.WebControls.Label Label4;
protected System.Web.UI.WebControls.Button btnshirt;
protected System.Web.UI.WebControls.Button bitHat;
protected System.Web.UI.WebControls.Button btnDVD;
protected System.Web.UI.WebControls.Button btnCheckout;
protected System.Web.UI.WebControls.Repeater basketlist;
protected System.Web.UI.WebControls.Button btnEmpty;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(Session["Basket"]==null)
{
InitializeBasket();
}
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{    
this.btnshirt.PreRender += new System.EventHandler(this.Page_Prerender);
this.btnshirt.Click += new System.EventHandler(this.AddItemToBasket);
this.bitHat.PreRender += new System.EventHandler(this.Page_Prerender);
this.btnDVD.PreRender += new System.EventHandler(this.Page_Prerender);
this.btnCheckout.Click += new System.EventHandler(this.btnCheckout_Click);
this.btnEmpty.Click += new System.EventHandler(this.btnEmpty_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void btnCheckout_Click(object sender, System.EventArgs e)
{

} private void btnEmpty_Click(object sender, System.EventArgs e)
{
InitializeBasket();
} private void AddItemToBasket(object sender, System.EventArgs e)
{
System.Web.UI.WebControls.Button  theButton = (System.Web.UI.WebControls.Button)sender;
string itemName = (string)theButton.CommandArgument;
System.Collections.Hashtable basketTable = (System.Collections.Hashtable)Session["Basket"];
if(basketTable[itemName]==null)
{
basketTable[itemName] = 0;
}
int itemCount = (int)basketTable[itemName];
basketTable[itemName] = itemCount + 1;
}
void InitializeBasket()
{
System.Collections.Hashtable basketTable = new System.Collections.Hashtable();
Session["Basket"] = basketTable;
}
void Page_Prerender(object sender, System.EventArgs e)
{
System.Collections.Hashtable basketTable = (System.Collections.Hashtable)Session["Basket"];
this.basketlist.DataSource = basketTable;
this.basketlist.DataBind(); }
}
}

解决方案 »

  1.   

    don't understand what you are doing, you should only need
    private void InitializeComponent()
    {    
    this.btnshirt.Click += new System.EventHandler(this.AddItemToBasket);
    this.btnCheckout.Click += new System.EventHandler(this.btnCheckout_Click);
    this.btnEmpty.Click += new System.EventHandler(this.btnEmpty_Click);
    this.Load += new System.EventHandler(this.Page_Load);
    this.PreRender += new System.EventHandler(this.Page_Prerender);
    }