《34-跨页面的主从报表.docx》由会员分享,可在线阅读,更多相关《34-跨页面的主从报表.docx(14页珍藏版)》请在优知文库上搜索。
1、在的面一余里我们学习r如何在一个页里显示主/从信息.另外-种常常运用的模式就是将主从信息用两个页分别显示,在前面的跨页面的主/从报表我们通过GridVieW显示全部的SUPPIier来运用这个模式GridVieW,Vti一个HyPer1.inkFie1.d,鞋接到另外一个页,井籽SuppIierID通过querystring传过去.其次个页运用GridView列出(选中的supp1.ier供应的product.这样的两页主;从我也可以用Da1.a1.iSI和Repeater来实现.唯一的区分是Data1.iSt和Repeater都不供应HyPer1.inkF1.e1.d.所以我们须要潦加,个H
2、yper1.ink控件或不在ItemTempIate1也运用HTM1.Hyper1.inkftfjNavigate1.1.rt属性和va的href属性可以通过声明或者编程来自定义.本章我们将探讨运川Repeater列出Ca1.egorieS.侍个1.istitem都包含fcategory的name和description,通过name可以干脆链接到其次个页面.在其次页里用Data1.ist显示选中的Categroy供/式的proudct.笫一步:夕U出Categories全部创建主从表的第一步都是显示主记录.因此,我f11忏先在“主页里显示CategorieS.打开Data1.istRepea
3、terFiItering文件夹里的Category1.istMastecaspx页,添加一个RePea1.er,然后通过智能标签添加一一个ObjectDataSource.JIJCategriesB1.1.类的GetCategories方法配四它.见图1.图1:运川CategoriesB1.1.类的GetCategories方法配置ObjectDataSource我们先不关切如何添加Iink.将Repeater的temp1.ate配置成显示/个category的name和description.见下面的代码:ASP.NETasp:RepeaterID=wRepeaterVrunat=serve
4、rDatasource1.D-wObjectDataSourceIEnab1.eVieWState=Fa1.se-西固K因完成了上面的代码后,在阅读器里阅读页面.如图2所示.JUntit1.edPdeeMicrosoftIn1.errw1.Exp1.orerBtestmrrt*t1*gO&。e.切G、MatrDtWIIReport.thDM1.KtandRpMrMastrDUN.AcrossTwoP2sHomeBaSKReportinQSmp1.eDisp1.ayTwo-PageMaster/Detai1.ReportOedar,tiyeParametersParameterntermgRep
5、ortsMaster-DeuH-DetaiA1.terbyOrop-Down1.istMesterZDetaiIAss Beverages-SoftChnks,coffees,teas,beets,aodMs Con QaryProducts-Cheeses GrainsZCered1.s-Breads,crackers,pstfandcrea1. MeatPoMry-Preparedmeats Produce-Onodfrutandbcurd Seafood-Seaweedandfish图2:列出全部的CaIegoryJI次步:将CategoryName转换成链到Detai1.sPage的1
6、.ink我们现在来添M一个Iink,当用户点击时,将会链到其次个页(ProduCtSForCaiegOryDetai1.S.aspx),花这个页里显示“从信息.这页里用Data1.ist显示选中的category的ProdUCt.为了推断是哪个Category的集接被点我们须要将CategoryID传到尤次页加卜脆的方法是通过querystring.我们通过名为CategOryID的qeryst11ng字段将这个传绐PrOdUctSFOrCategOryDetai1.S.aspx.例如,布行Beveragescategroy卜的poduct.Category1.D为1.用户将访问PrOdUCt
7、SFOrCategOryDetaiIS.aspx?CategoryID=I页.为了创建hyper1.ink我们须要添加HyPer1.ink控件或者在ItemTemp1.ate电添加HTM1.在每行的hyper1.ink都相同的状况卜.两种方法都足的U对RePeater来说我更情愿运用.见下面的代码:ASPNETahref=ProductsForCategoryDetai1.s.aspx?Category1.D=-留意CategoryID可以干脆通过href由性写入.解通引号和咨略号.ASP.NETasp:HyPer1.inkrunat=srverText=NaViga1.eUr1.=-留意在绑
8、定语法H!静态UR1.ProductsForCategoryDetai1.s.asp7Category1.D是如何脆和EVa1.rCaggoMD)的结果串联.运用HyPer1.ink控件的个好处是假如须要的话可以编程访问RepeatertKJ1.temDataBoundeventhand1.er.例如你可以将没仃关联product的categories显示为文本,而不是Iink.料那些没行关联product的categories的Hyper1.ink的NavigateUrI网性设为一个空的?符串,这样categoryname就显示为个text(而不是Iink).更多的通过ItemDataBou
9、ndeventhand1.er的编程来格式化Data1.JSt,和Repeater内容的信息请价格式化Data1.ist和Repeater的数据.线如你在跟着段程做的话,运用上面两种方法都可以.当同该这页时加个categoryname都以1.ink的形式工现.可以链接到ProductsForCategoryDetai1.s.aspx页,并将CategoryID的低传过去.见图3.图3:CategoryNames现在捱接见PrOdUetSFOrCaIegoryDetaiIS.aspx页第三步:列出选中的CategOry下的Products完成Category1.is1.Master.asp页后,
10、我们现在来兀成从页FrOdUCtSFOreategoryDetas.aspx.打开这个页,拖,个Data1.iSt拄件进来,并将ID设河为PrOdUCtSInCategory.然后在智能标选择添加个名为Products1.nCategoryDataSource的ObjectDatasourceJH1.IProductsB1.1.类的GetPrOdUC1.SByCategory1.D(CategOry1.D)方法配沟它.在INSERT.UPDATE,DE1.ETE标签电选样None.图4:运川ProductsB1.1.类的GetProdUCtSByCategoryID(Category1.D)方
11、法配置ObjectDataSource(I1.fGetProdUCtSByCategOryQ(CategOryID)方法接收,个参数,所以向小会提示我们指定参数米源.设置parametersource为QUeryString、QUeryStringFieIdhCategoryID.1.-111.r?rPeramtfers:Perameterourc:QuerySWngHeW:C4tgcryiDfajtViut:ConfigureDataSource-ObjectDataSourceIDefineParametersTheVfeafdh5detectedonecrmoreZrd(r4ersryg
12、natre:GctProductsatcyy!(X1.nt32catcoryD),returnsProductsOataTobIe图5:运川QuerystringFie1.d作为ParameterSource象前面教程里看到的咫杼,完成数据源配?UiViSUa1.Studio会自动创建个ItemTemp1.ate列出每个7段的name和Va1.UC.我们只显示name,supp1.ier和PriCe如Data1.ist的RepeatCo1.umns属性改为2.完成这些后你的声明标记看起来应当和下面常不多:ASPNETasp:Data1.istID=Producis1.nCategoryrunat=*server,DataKeyFieW=Product1.D-RePeatCo1.UmnS=2Datasource1.D=nProducts1.nCategoryDataSource,EnabIeVieWState=Fa1.se、Supp1.iedby%#EvaICUnitPrice-.0C