昨天说到了Default.aspx页面今天来讲Products.aspx页面,该页面由有一个母版页和一个用户控件组成。
其中的用户控件中只包涵了一个CustomList自定义控件它继承至DataList 并实现分页:
public event DataGridPageChangedEventHandler PageIndexChanged;
override public object DataSource {
set {
try {
dataSource = (IList)value;
//非泛型列表的基接口,避免用户将没有继承Icollection的类型传递进来如int型之类的。
ItemCount = dataSource.Count; //获取dataSource中元素的数量
}
catch {
dataSource = null;
ItemCount = 0;
}
}
}
//重写BaseDataList.OnLoad()方法
override protected void OnLoad(EventArgs e) {
if (Visible) {
string page = Context.Request[KEY_PAGE];
int index = (page != null) ? int.Parse(page) : 0;
SetPage(index); //初始化NewPageIndex属性
}
}
public void SetPage(int index) {
OnPageIndexChanged(new DataGridPageChangedEventArgs(null, index));
}
//如果PageIndexChanged事件不为空则执行相对应的方法
virtual protected void OnPageIndexChanged(DataGridPageChangedEventArgs e) {
if (PageIndexChanged != null)
PageIndexChanged(this, e);
}
ProductsControl.ascx控件的Page_Load中
this.CachePolicy.Dependency = DependencyFacade.GetProductDependency();////在我的前一篇文章中有介绍
现在来说说它的母版页MasterPage.master它的里面包涵了一个BreadCrumbControl用户控件用来实现产品的导航。其他的都是常用的web控件
接着与Products.aspx相关联的Items.aspx用来显示产品它主要由ItemsControl.ascx用户控件组成包含一个继承Repeater的自定义控件CustomGrid内部代码和CustomList差不多。
<tr class="itemText">
<td colspan="2"><asp:HyperLink ID="lnkCart" runat="server" NavigateUrl='<%#string.Format("~/ShoppingCart.aspx?addItem={0}", Eval("Id")) %>' SkinID="lnkCart"></asp:HyperLink></td>
</tr>
<tr class="itemText">
<td colspan="2"><asp:HyperLink ID="lnkWishList" runat="server" NavigateUrl='<%# string.Format("~/WishList.aspx?addItem={0}", Eval("Id")) %>' SkinID="lnkWishlist"></asp:HyperLink></td>
</tr>
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1701176