# Menu 用户控件

说明： Menu用户控件显示了Commerce数据库中全部产品类别的一个列表，可以使用户方便地链接到每个种类下实际产品列表的页面。

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

使用说明： Menu用户控件应用在commerce starter kit应用程序的几乎所有页面上。

Menu用户控件逻辑全部封装在它的Page_Load 事件句柄中。当包含Menu用户控件的网页被浏览器的客户端调用的时候，该事件句柄被调用。

Page_Load 事件句柄 Page_Load事件句柄创建ProductDB类的一个实例，并调用其GetProductCategories方法。该方法内部使用ProductCategoryList 存储过程从commerce数据库中获得产品种类信息。

产品种类集合使用模板化的服务器控件来显示。 DataList服务器控件包含两个描述表格外观的用户自定义的模板. ItemTemplate 模板定义表格里每个记录的外观；而 SelectedItemTemplate 模板则为当前被选定的记录定义不同的外观。在这个例子中, SelectedItemTemplate模板将一种不同的CSS类应用于超链接。

由ProductsDB.GetProductCategories()方法返回的数值通过设置其数据源的属性来装入DataList控件中中，然后调用它的DataBind() 方法，当此方法被调用时，DataList将其ItemTemplate模板或SelectedItemTemplate模板的拷贝反复应用到数据源的每一行，并从数据行获取数据。

性能说明：

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