在确保了传入的CommandName的值等于"ListProducts"后,event handler将CategoryProductsDataSource ObjectDataSource的CategoryID的参数设为传入的CommandArgument.对ObjectDataSource的SelectParameters的修改自动引起DataList重新绑定到数据源,显示新的选中的category关联的product.
protected void Categories_ItemCommand(object source, RepeaterCommandEventArgs e) { // If it's the "ListProducts" command that has been issued... if (string.Compare(e.CommandName, "ListProducts", true) == 0) { // Set the CategoryProductsDataSource ObjectDataSource's CategoryID parameter // to the CategoryID of the category that was just clicked (e.CommandArgument)... CategoryProductsDataSource.SelectParameters["CategoryID"].DefaultValue = e.CommandArgument.ToString(); } }
做完这些后,本章就结束了!现在在浏览器里看看你的页面.图14是第一次浏览时的样子.因为还没有category被选中,所以没有product显示出来.点击一个category,比如Produce,和它关联的product以两列的方式显示出来.见图15.
图 14:第一次浏览页面时没有Product显示
图 15: 点击Produce Category 后,相关的 Products 在右边显示出来
总结
我们在本章和前面一章里学习了主/从表可以分别显示在两个页或者一起显示在一个页.如果显示在一个页上,我们需要考虑如何来控制它们的外观.在使用GridView 和DetailView实现的主/从报表一章我们将从记录显示在主记录之上,而在本章我们使用CSS将主记录显示在从记录的左边.我们还探讨了如何获取每个category关联的product数量,以及在点击Repeater里的LinkButton(或ButtonImageButton)时服务器端的处理逻辑.