# PopularItems 用户控件

说明： PopularItems 用户控件列出了一个commerce starter kit中购买的最受欢迎的前五个商品的表，并使得用户轻松地链接到每一项商品的细节。

点击这里可以了解什么是用户控件以及它们是如何在ASP.NET网络应用程序中使用的更多知识。

操作细节： 这种控件用在commerce starter kit application的主页里

PopularItems 用户控件逻辑被完全封装到Page_Load事件句柄中.当含有这一用户控件的页面被浏览器的客户端访问的时候Page_Load事件句柄才被调用

Page_Load 事件句柄： Page_Load 事件句柄创建了一个ProductDB类的实例，并调用GetMostPopularProductsOfWeek方法，将ProductID传给它。该方法通过调用ProductsMostPopular存储过程从Commerce数据库中获取产品信息

产品集合使用一个模板式的服务器控件来展示。当Repeater服务器控件在用户控件中使用时，它含有三个客户定义的模板- HeaderTemplate, ItemTemplate 和FooterTemplate, 他们描述了表单的外观。ItemTemplate模板定义了被绑定数据的显示方式， HeaderTemplate 模板定义了在表单开始发出的HTML外观， FooterTemplate模板定义了在表单最后发出的HTML外观。

由ProductsDB.GetProductsAlsoPurchased()方法返回的数值通过设置数据源的属性装入Repeater,然后调用其DataBind() 方法。当DataBind() 方法被调用时， Repeater将调用其HeaderTemplate模板，然后将其ItemTemplate模板的拷贝反复应用到数据源的每一行，并从数据行获取数据最后转发器将调用其FooterTemplate模板。

性能说明：

- PopularItems用户控件支持部分网页缓冲输出(ASP.NET BETE2的新特点)以每隔一小时缓冲输出它的结果。这就避免了每次请求访问含有该控件的页面时都去读取数据库的数据(极大地提高了性能)