ASP.NET 2.0数据教程之三十五:使用Repeater和DataList实现的主/从报表
lectedValue属性.
注意:这是我们在Repeater里 使用LinkButton的其中一个挑战.如果我们使用hperlink,可以通过querystring来 传递CategoryID. 在我们解决这个问题前,首先将ObjectDataSource绑定到 DataList,然后指定ItemTemplate. 从DataList的智能标签添加一个名为 CategoryProductsDataSource的ObjectDataSource,并使用ProductsBLL类的 GetProductsByCategoryID(cateogryID)配置它.由于此DataList只提供只读功能, 因此在INSERT,UPDATE,DELETE标签里选择None. 图 12:配置 ObjectDataSource 由于GetProductsByCategoryID (categoryID)方法需要一个输入参数,向导会要求我们指定参数源.我们使用 GridView或DataList列出categories时,可以将参数源设为Control,ControlID设 为数据控件的ID.然而由于Repeater没有SelectedValue属性,所以不能用作参数源 .你可以查看ControlID下拉列表,它里面只包含一个控件 ID—CategoryProducts(DataList). 图 13: 配置参数 配置完数据源后,Visual Studio为DataList自 动产生ItemTemplate.用我们前面使用的template替换默认的ItemTemplate.将 DataList的RepeatColumns属性设为2.完成这些后,你的代码应该和下面的差不 多: ASP.NET
目前为止 CategoryProductsDataSource ObjectDataSource的categoryID参数还没有设置. 所以浏览页面时没有任何的product显示出来.我们现在需要将它设置为Repeater 中的被点击的category的CategoryID.这里有两个问题,第一是我们如何判断什么 时候Repeater的ItemTemplate被点了.二是哪个被点了. 和 Button,ImageButton一样,LinkButton有一个Click event和一个Command event.Click事件仅仅用来说明LinkButton被点击了.有时候我们需要传递更多的 信息到event handler里.这样的话,就需要使用LinkButton的CommandName 和 CommandArgument .当LinkButton被点时,Command事件激发,event handler会接受 CommandName和CommandArgument的值. 当Repeater里的template里激发了 一个Command事件时,Rpeater的ItemCommand事件被激发.并将被点击的 LinkButton(或者Button和ImageButton)的CommandName和CommandArgument的值传 进来.因此,判断category LinkButton什么时候被点击了,我们需要: 设置 Rpeater里的ItemTemplate的LinkButton的CommandName属性(我使用的 "ListProducts").设置了值后LinkButton被点后Command事件会激发. 设置LinkButton的CommandArgument属性为当前item的CategoryID. 为Repeater的ItemCommand事件创建一个event handler.在它里面将传入 的CommandArgument值赋给CategoryProductsData |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |