34-跨页面的主从报表.docx

上传人:夺命阿水 文档编号:1564469 上传时间:2024-08-04 格式:DOCX 页数:14 大小:203.13KB
返回 下载 相关 举报
34-跨页面的主从报表.docx_第1页
第1页 / 共14页
34-跨页面的主从报表.docx_第2页
第2页 / 共14页
34-跨页面的主从报表.docx_第3页
第3页 / 共14页
34-跨页面的主从报表.docx_第4页
第4页 / 共14页
34-跨页面的主从报表.docx_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《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.nCategoryruna

13、t=*server,DataKeyFieW=Product1.D-RePeatCo1.UmnS=2Datasource1.D=nProducts1.nCategoryDataSource,EnabIeVieWState=Fa1.se、Supp1.iedbycSctParamters现在我们来看行效果,先阅读Category1.istMatenaspx页燃后在列出的category上点-个Iink.这样就会跳到ProductsForCatGgoryDetai1.s.aspx页,并将CategoryID通过querystring传过.Products1.nCategofyDataSourceObj

14、ectDataSource会返网指定Category的product并将它外显示在Data1.ist中,每行两个.图6是点击Beverages的鼓图.回回叵国QPXt*C4t9*0U(MpartOteQoryCkeII33WorkingwithDataTutoria1.sH0cReportrgSnp1.eOnpyProductsBe1.ongingtotheSe1.ectedCategoryOdaratreParamoursCheiIouqhing1.umb0r0ck1.aqerParimeurF1.terngReportsAiterbyDrop-DownU1.tMasur-Oetab-Dtt

15、iMasurZDewiIAcrossTwoPg*sDetaftorSe1.eteJRowCustocrMzedOr*ChangOutbade1.agvrU,U4、,CMUr4.M?15kqudQcAki1.ekka1.ikdodt4t*SI440t1.00Sto1.eyStoutAcmToU,U43.Cmmm1.h,I.Mv4Xtffott*w4H1.ocWnrt3UntMtedPatMkrmftInternet(xprer*9XFrvtIMbtMQMQW4/SeardiFXwa图6:G行两个的显示BeverageS第四步:在ProductsForCategoryDetai1.s.aspx里显

16、示Category信息当用户在Category1.istMaster.aspx页点击一个category时,公跳到ProductsForCategoryDetai1.s.aspx货并显示选中的categry卜的PrOduC1.然而在这个贞甲:并没行包含哪个Category被选中了的信息.用户可能想点BeVerageS,但是结果戊了CondimentS,这时他没方法知道自己是否点错了.为了布阙这个问题,我们可以将选中的category信息显示在ProductsForCategoryDetai1.s.aspx页的顶部name和description).5ERT0EIETeJChooseametho

17、dcfthebusnessOb1.eCtthatreturnsdtatoassooate3thgSE1.ECTO(Wabe0.ThemethodcanreturnaQetaSet,DataReadw,orstrongypedco1.ectto.Examp1.e:GetProdcts(Int32Cdtogory1.d)zrerunsaDataSet.hooseamethod:GetC&CQorySyC&eg(Xy1.o(IM32c&egory1.D),returnsQvIGetCateQ(X3。ietumsCateoogOataTaUe骗OQ0ty1D(1N3ZCQtgQfyIP),r&urmC

18、&eodDAoToHc(tC*9ryCMgoryID(1.rt32StgofyID),rIICnc图7:f1.H,CategoryDataSourcG在第:步增加Products1.nCategoryDataSourceObjectDataSource时,向导先示我们为Ge1.CategOryByCa1.egory1.Dcategory方法指定输入参数.在这里我们运用和前面一样的配也将parametersource设为QUeryS1.ringQUeryStringF1.eId设为Category1.D(见图5).完成向野后,Visua1.Studio会为FOrmVieWH动创建ItemTemp

19、Iate1EditItemTempIate和InSert1.temTemPIate,由于只供应只读的界面,我们将EditItemTempIate和InSen1.temTemPIa1.e.当然你也可以自定义FormView的ItemTemP1.ate.完成向的操作信你的标记值古应当和下面空不多:ASP.NETasp:1.abe1.D-CategoryName1.abe1.rnat-*serverText=,asp:1.abe1.ID=nDescription1.aberrunat=serverTeXI=,asp:ObjectDataSourceID-CategoryDataSource-ru11

20、at-server,OIdVa1.UeSParameterFOnTIatString=Origina1.0”Se1.ctMethod=GetCategoryByCategory1.DTyPeName=CategoriesB1.1.剧.京:我f11还花FormView匕加了-个HyPer1.ink,它会将用户困川到Categofy页(Category1.isiMastenaspx).3UntH1.edMkrosoftInternet(xp1.orerECV*FEE工&皿02】.;/26.色Mp3AKtK9QrCdjCMft*brfAfcrAJCt*)2WorkingwithDataTutoria

21、1.sHome8acReportnqSemDtsoAavOdarativeParametersProductsBe1.ongingtotheSe1.ectedCategoryReturnq1.istofCatpoye.SettngParameterVMmsFiterngReportsFrfttrbyDrop-DownUStM4tur-ote-OUftsMMtef/Deta1.AcrossTwoPa9esDetatbofSe1.ectedRgCustomeedFormAtongFormatCo1.ors/*SCondimentsS*andvr*2C.rtah,t*4z”d,s*q,Anisood

22、SyvupCUMMo1.occaW*HHM*CUU*TrWHftaooCheffon*CajunSoningS1.ropdArob1.0&*H4“KtOt*aC32S2.9ChcfAnonaGUmboMix1.ouistofiaFirHrtPepperSMIc。“N*vOUfC4Z刚”(1.4“NwO4MOWv可qww图8:Category信息显示在页的境都第五步:假如选中的Category卜兄Products则显示个提示信息无论行没有相关联的PrOdUC1.CategoryIJStMaSter.aspx页都公列出全部的category.f1.,1.JIJ户点了一个无product(fcate

23、gory、山于数楙源为空,在ProductsForCategoryDetai1.s.aspx页里的Data1.iSt将不会显示.在前面的教程里我们看到了GridView供应了个EmptyDataText制性,可以用来在数据源无记录时定义个消息.不拿的是Data1.iSt和RePeater都没有这个属性.为了在category无product时提示用户,我们须婴在页里加个1.abe1.控件.在没有匹配的product时物它的TeXtM性设也为要显示的信息.我们须要依据Data1.ist有没有内容来编程设祝它的ViSibIe国性,首先在DataIJSt下加一个1.abe1.控件.将它的ID设为No

24、ProductsMessage.Text设为Therearenoproductsforthese1.ectedcategory.Ai0i们侬据是i,rjtSKi1.JProductsInCategoryData1.ist来设置它的ViSibte屉件.这一步须骁在数据绑定到Data1.iSt之后做.对GrkiView.DetaiIsViewf1.iFormView来说,我们可以为DataBoundK务创建,个eventhand1.er.在数据统定完后激发.然而Data1.ist和Repeater都没有DataBOUnd事务.在这个例子里我们可以在Pag1.1.Oad事务处理里设置1.abe1.的

25、Visib1.e及性.由于数据绑定到Data1.ist先于Page的1.oad沙务.然而,这种方法在一般状况下不会起作用国为从ObjectDataSource来的数据是在页面周期之后绑定到DataIJSt.假如显示的数据第F另一个控件的值,例如,象在运用DropDown1.ist显示主记来的主/从表的例f里,数据直到Page的生命周期的PreRender后才绑定到控件.一个在全部状况下都起作用的解决方案是在Data1.iSt的HemDataBOUnd(或ItemCreated)犷务处理中设置Visib1.e为FaISe.在这种状况下我们知道数据源中.至少行个数据项,因此可以冷碱NoProduc

26、tsMessage1.abe1.除了这个eventhand1.er外,我们还须要一个Data1.istDataBingd的事务处理,来初始化1.abe1.的Visib1.eD性为TrUe.由于DataBinding时间在ItemDataBoUnd货务元激发,1.abe1.的ViSibIe加性会初始化为TrUe.假如行数据,它会被设为Fa1.se.W,卜面的代码:CftprotectedvoidProducts1.nCategory_DataBinding(objectsender.EventArgse)(UShowthe1.abe1.NOPrOdUctSMeSSage.Visib1.e=tru

27、e;protectedvodProducts1.nCategoryItemDataBound(objectsender,Data1.istItemEventArgse)(HIfwehaveadataitem,hidethe1.abe1.if(e.Item.ItemType=1.istItemTypeIteme.1.tem.1.temTyp=1.istItemType-AItematingItem)NoproductsMessaqe.Visibie=fa1.se;)在NOnhWind数据库里的CaggOry都和个或个ProdUa关联.为了测试上面的功能.动修改了Northwnd数据咋,将Prod

28、ucecategory(Category1.D=7)fijproduct都和SeafoodCategory(CategoryID-8)关联起来.这个可以在ServerExp1.orer!Ri1.-JfNewQuery并运用下面的语句:SQ1.UPDATEProductsSETCategoryID=8WHERECategoryID-7更斯了数据库后,I11I到CaiegOry1.iStMasier.aspx页,点ProdUCet接;IFProducecategory下而(2经没有任何PrOdUCI,所以你会看到TherearenoproductsforIhese1.ectedCategOry的提

29、示,见图9.WorkingwithDataTutoria1.sHomeBasicReportingSimp1.eDisp1.ayDec1.arativeParametersProductsBe1.ongingtotheSe1.ectedCategoryVVReemt。OfCEoacmsR1.tenngReportsSetbngParameterVa1.uesFi1.terbyDrop-DownUstProduceO*de2bcxdMMter-DetaiIs-Detarfs1.herearenoproductsforthse1.ectedcategory.Oww号1.0C4*m图9:选中的Cat

30、egOry卜AiPrOduCt时会显示个提示消息总结主,从记录可以在一个页上整示,也可以在两个页上分别显示,在本章里我们学习了如何在“主页上用Repeater列出CaIegOry,将相关的product在“从,页上列此每个主页上的项郎包含一个流到从页的Iink,并将行的CategOry1.D值传过去.在“从页中通过ProductsB1.1.fjGeIProdUCtSByCategoryID(CategOry1.D)方法返回product.category1.D参数通过querystring的CategoryID值指定.而H.我们还将category的细做环节运用FormView显示在从”页里,当选中的Category无关联PrOdUCt时,会显示一条提示信息.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号