1、图 2: 创建一个名为CategoriesDataSource的ObjectDataSource 用CategoriesBLL类的GetCategories方法配置O图3: 用CategoriesBLL类的GetCategories方法配置ObjectDataSource 我们需要切换到源视图来手动输入声明代码指定Repeater的template内容.增加一个带的name和的description的ItemTemplate.用将category分开.在作完这些后,你的页面代码里的Repeater和ObjectDataSource声明语言应该和下面差不多:ASP.NET ItemTemplat
2、e/h4Description/p/ItemTemplateSeparatorTemplatehr /SeparatorTemplate/asp:RepeaterObjectDataSource ID= OldValuesParameterFormatString=original_0 SelectMethod=GetCategories TypeName=CategoriesBLLObjectDataSource 图4 表示现在在浏览器里浏览这个页.图 4:列出每个Category的 Name 和Description , 用水平线隔开第二步: 增加嵌套的Repeater显示Product下
3、一步我们的任务是在CategoryList的ItemTemplate里添加一个Repeater用来显示属于各个category下的product.有很多方法可以存取内层的Repeater数据,我们将探讨两种现在我们在CategoryList Repeater的ItemTemplate里创建product Repeater.每个product里将包含name和price我们将下面的标记加到CategoryList的ItemTemplate里:Repeater runat= ID=ProductsByCategoryListHeaderTemplateul/HeaderTemplatelistro
4、ngProductName/strong (UnitPrice, 0:C)FooterTemplate/ul/FooterTemplate第三步: 将各Category下的Product绑定到 ProductsByCategoryList Repeater如果现在你浏览这个页,你会看到象图4一样的页面,因为我们还没有在Repeater里绑定任何数据.有几种方法可以将合适的product记录绑定到Repeater里,其中一些会比较有效.现在主要的任务是为指定category取到合适的product.可以通过在ItemTemplate里语法声明ObjectDataSource或者直接在后台代码编程
5、来将数据绑定到内层的Repeater.通过ObjectDataSource和ItemDataBound来获取数据这里我们还是用ObjectDataSource来实现.ProductsBLL类的GetProductsByCategoryID(Category)方法可以返回特定CategoryID的products信息.因此,我们将在CategoryList Repeater的ItemTemplate里新建一个ObjectDataSource,并用这个方法配置它.不幸的,Repeater不允许通过设计视图来修改template,因此我们需要手动添加将声明语法.见下面的代码:ProductsByCa
6、tegoryDataSource - sold as Parameter Name=CategoryID Type=Int32 /SelectParameters当使用ObjectDataSource方法时我们需要设置ProductsByCategoryList Repeater的DataSourceID为ObjectDataSource(ProductsByCategoryDataSource).注意ObjectDataSource有一个来指定传给GetProductsByCategoryID(categoryID)的categoryID.但是我们怎么来指定这个值呢?我们可以设置Defaul
7、tValue属性为,见下面的代码:ASP.NET DefaultValue=)不幸的,数据绑定语法只能用在有DataBinding事件的控件里.Parameter类没有这样的事件,因此这样使用会出错.我们需要为CategoryList Repeater的ItemDataBound创建一个事件处理来设置这个值.每个item绑定到Repeater时激发ItemDataBound事件.因此每次外层的Repeater激发这个时间时,我们可以将当前的CaegoryID的值传给ProductsByCategoryDataSource ObjectDataSource的CategoryID参数.下面的代码是为CategoryList Repeater的ItemDataBound创建一个event handle
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1