外文翻譯-英文文獻(xiàn)-使用兩個dropdownlist過濾的主從報表學(xué)士學(xué)位論文_第1頁
外文翻譯-英文文獻(xiàn)-使用兩個dropdownlist過濾的主從報表學(xué)士學(xué)位論文_第2頁
外文翻譯-英文文獻(xiàn)-使用兩個dropdownlist過濾的主從報表學(xué)士學(xué)位論文_第3頁
外文翻譯-英文文獻(xiàn)-使用兩個dropdownlist過濾的主從報表學(xué)士學(xué)位論文_第4頁
外文翻譯-英文文獻(xiàn)-使用兩個dropdownlist過濾的主從報表學(xué)士學(xué)位論文_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

PAGEPAGE17Master/DetailFilteringWithTwoDropDownListsIntroductionIntheprevioustutorialweexaminedhowtodisplayasimplemaster/detailsreportusingasingleDropDownListpopulatedwiththecategoriesandaGridViewshowingthoseproductsthatbelongtotheselectedcategory.Thisreportpatternworkswellwhendisplayingrecordsthathaveaone-to-manyrelationshipandcaneasilybeextendedtoworkforscenariosthatincludemultipleone-to-manyrelationships.Forexample,anorderentrysystemwouldhavetablesthatcorrespondtocustomers,orders,andorderlineitems.Agivencustomermayhavemultipleorderswitheachorderconsistingofmultipleitems.SuchdatacanbepresentedtotheuserwithtwoDropDownListsandaGridView.ThefirstDropDownListwouldhavealistitemforeachcustomerinthedatabasewiththesecondone'scontentsbeingtheordersplacedbytheselectedcustomer.AGridViewwouldlistthelineitemsfromtheselectedorder.WhiletheNorthwinddatabaseincludethecanonicalcustomer/order/orderdetailsinformationinitsCustomers,Orders,andOrderDetailstables,thesetablesaren'tcapturedinourarchitecture.Nonetheless,wecanstillillustrateusingtwodependentDropDownLists.ThefirstDropDownListwilllistthecategoriesandthesecondtheproductsbelongingtotheselectedcategory.ADetailsViewwillthenlistthedetailsoftheselectedproduct.Step1:CreatingandPopulatingtheCategoriesDropDownListOurfirstgoalistoaddtheDropDownListthatliststhecategories.Thesestepswereexaminedindetailintheprecedingtutorial,butaresummarizedhereforcompleteness.OpentheMasterDetailsDetails.aspxpageintheFilteringfolder,addaDropDownListtothepage,setitsIDpropertytoCategories,andthenclicktheConfigureDataSourcelinkinitssmarttag.FromtheDataSourceConfigurationWizardchoosetoaddanewdatasource.

Figure1:AddaNewDataSourcefortheDropDownList(Clicktoviewfull-sizeimage)Thenewdatasourceshould,naturally,beanObjectDataSource.NamethisnewObjectDataSourceCategoriesDataSourceandhaveitinvoketheCategoriesBLLobject'sGetCategories()method.Figure2:ChoosetoUsetheCategoriesBLLClass(Clicktoviewfull-sizeimage)Figure3:ConfiguretheObjectDataSourcetoUsetheGetCategories()Method(Clicktoviewfull-sizeimage)AfterconfiguringtheObjectDataSourcewestillneedtospecifywhichdatasourcefieldshouldbedisplayedintheCategoriesDropDownListandwhichoneshouldbeconfiguredasthevalueforthelistitem.SettheCategoryNamefieldasthedisplayandCategoryIDasthevalueforeachlistitem.Figure4:HavetheDropDownListDisplaytheCategoryNameFieldandUseCategoryIDastheValue(Clicktoviewfull-sizeimage)AtthispointwehaveaDropDownListcontrol(Categories)that'spopulatedwiththerecordsfromtheCategoriestable.WhentheuserchoosesanewcategoryfromtheDropDownListwe'llwantapostbacktooccurinordertorefreshtheproductDropDownListthatwe'regoingtocreateinStep2.Therefore,checktheEnableAutoPostBackoptionfromthecategoriesDropDownList'ssmarttag.Figure5:EnableAutoPostBackfortheCategoriesDropDownList(Clicktoviewfull-sizeimage)Step2:DisplayingtheSelectedCategory'sProductsinaSecondDropDownListWiththeCategoriesDropDownListcompleted,ournextstepistodisplayaDropDownListofproductsbelongingtotheselectedcategory.Toaccomplishthis,addanotherDropDownListtothepagenamedProductsByCategory.AswiththeCategoriesDropDownList,createanewObjectDataSourcefortheProductsByCategoryDropDownListnamedProductsByCategoryDataSource.Figure6:AddaNewDataSourcefortheProductsByCategoryDropDownList(Clicktoviewfull-sizeimage)Figure7:CreateaNewObjectDataSourceNamedProductsByCategoryDataSource(Clicktoviewfull-sizeimage)SincetheProductsByCategoryDropDownListneedstodisplayjustthoseproductsbelongingtotheselectedcategory,havetheObjectDataSourceinvoketheGetProductsByCategoryID(categoryID)methodfromtheProductsBLLobject.Figure8:ChoosetoUsetheProductsBLLClass(Clicktoviewfull-sizeimage)Figure9:ConfiguretheObjectDataSourcetoUsetheGetProductsByCategoryID(categoryID)Method(Clicktoviewfull-sizeimage)InthefinalstepofthewizardweneedtospecifythevalueofthecategoryIDparameter.AssignthisparametertotheselecteditemfromtheCategoriesDropDownList.Figure10:PullthecategoryIDParameterValuefromtheCategoriesDropDownList(Clicktoviewfull-sizeimage)WiththeObjectDataSourceconfigured,allthatremainsistospecifywhatdatasourcefieldsareusedforthedisplayandvalueoftheDropDownList'sitems.DisplaytheProductNamefieldandusetheProductIDfieldasthevalue.Figure11:SpecifytheDataSourceFieldsUsedfortheDropDownList'sListItems'TextandValueProperties(Clicktoviewfull-sizeimage)WiththeObjectDataSourceandProductsByCategoryDropDownListconfiguredourpagewilldisplaytwoDropDownLists:thefirstwilllistallofthecategorieswhilethesecondwilllistthoseproductsbelongingtotheselectedcategory.WhentheuserselectsanewcategoryfromthefirstDropDownList,apostbackwillensueandthesecondDropDownListwillberebound,showingthoseproductsthatbelongtothenewlyselectedcategory.Figures12and13showMasterDetailsDetails.aspxinactionwhenviewedthroughabrowser.Figure12:WhenFirstVisitingthePage,theBeveragesCategoryisSelected(Clicktoviewfull-sizeimage)Figure13:ChoosingaDifferentCategoryDisplaystheNewCategory'sProducts(Clicktoviewfull-sizeimage)CurrentlytheproductsByCategoryDropDownList,whenchanged,doesnotcauseapostback.However,wewillwantapostbacktooccuronceweaddaDetailsViewtodisplaytheselectedproduct'sdetails(Step3).Therefore,checktheEnableAutoPostBackcheckboxfromtheproductsByCategoryDropDownList'ssmarttag.Figure14:EnabletheAutoPostBackFeaturefortheproductsByCategoryDropDownList(Clicktoviewfull-sizeimage)Step3:UsingaDetailsViewtoDisplayDetailsfortheSelectedProductThefinalstepistodisplaythedetailsfortheselectedproductinaDetailsView.Toaccomplishthis,addaDetailsViewtothepage,setitsIDpropertytoProductDetails,andcreateanewObjectDataSourceforit.ConfigurethisObjectDataSourcetopullitsdatafromtheProductsBLLclass'sGetProductByProductID(productID)methodusingtheselectedvalueoftheProductsByCategoryDropDownListforthevalueoftheproductIDparameter.Figure15:ChoosetoUsetheProductsBLLClass(Clicktoviewfull-sizeimage)Figure16:ConfiguretheObjectDataSourcetoUsetheGetProductByProductID(productID)Method(Clicktoviewfull-sizeimage)Figure17:PulltheproductIDParameterValuefromtheProductsByCategoryDropDownList(Clicktoviewfull-sizeimage)YoucanchoosetodisplayanyoftheavailablefieldsintheDetailsView.I'veoptedtoremovetheProductID,SupplierID,andCategoryIDfieldsandreorderedandformattedtheremainingfields.Inaddition,IclearedouttheDetailsView'sHeightandWidthproperties,allowingtheDetailsViewtoexpandtothewidthneededtobestdisplayitsdataratherthanhavingitconstrainedtoaspecifiedsize.Thefullmarkupappearsbelow:<asp:DetailsViewID="ProductDetails"runat="server"AutoGenerateRows="False"DataKeyNames="ProductID"DataSourceID="ObjectDataSource1"EnableViewState="False"><Fields><asp:BoundFieldDataField="ProductName"HeaderText="Product"SortExpression="ProductName"/><asp:BoundFieldDataField="CategoryName"HeaderText="Category"ReadOnly="True"SortExpression="CategoryName"/><asp:BoundFieldDataField="SupplierName"HeaderText="Supplier"ReadOnly="True"SortExpression="SupplierName"/><asp:BoundFieldDataField="QuantityPerUnit"HeaderText="Qty/Unit"SortExpression="QuantityPerUnit"/><asp:BoundFieldDataField="UnitPrice"DataFormatString="{0:c}"HeaderText="Price"HtmlEncode="False"SortExpression="UnitPrice"/><asp:BoundFieldDataField="UnitsInStock"HeaderText="UnitsInStock"SortExpression="UnitsInStock"/><asp:BoundFieldDataField="UnitsOnOrder"HeaderText="UnitsOnOrder"SortExpression="UnitsOnOrder"/><asp:BoundFieldDataField="ReorderLevel"HeaderText="ReorderLevel"SortExpression="ReorderLevel"/><asp:CheckBoxFieldDataField="Discontinued"HeaderText="Discontinued"SortExpression="Discontinued"/></Fields></asp:DetailsView>TakeamomenttotryouttheMasterDetailsDetails.aspxpageinabrowser.Atfirstglanceitmayappearthateverythingisworkingasdesired,butthere'sasubtleproblem.WhenyouchooseanewcategorytheProductsByCategoryDropDownListisupdatedtoincludethoseproductsfortheselectedcategory,buttheProductDetailsDetailsViewcontinuedtoshowthepreviousproductinformation.TheDetailsViewisupdatedwhenchoosingadifferentproductfortheselectedcategory.Furthermore,ifyoutestthoroughlyenough,you'llfindthatifyoucontinuallychoosenewcategories(suchaschoosingBeveragesfromtheCategoriesDropDownList,thenCondiments,thenConfections)everyothercategoryselectioncausestheProductDetailsDetailsViewtoberefreshed.Tohelpconcretizethisproblem,let'slookataspecificexample.WhenyoufirstvisitthepagetheBeveragescategoryisselectedandtherelatedproductsareloadedintheProductsByCategoryDropDownList.ChaiistheselectedproductanditsdetailsaredisplayedintheProductDetailsDetailsView,asshowninFigure18.

Figure18:TheSelectedProduct'sDetailsareDisplayedinaDetailsView(Clicktoviewfull-sizeimage)IfyouchangethecategoryselectionfromBeveragestoCondiments,apostbackoccursandtheProductsByCategoryDropDownListisupdatedaccordingly,buttheDetailsViewstilldisplaysdetailsforChai.Figure19:ThePreviouslySelectedProduct'sDetailsareStillDisplayed(Clicktoviewfull-sizeimage)PickinganewproductfromthelistrefreshestheDetailsViewasexpected.Ifyoupickanewcategoryafterchangingtheproduct,theDetailsViewagainwon'trefresh.However,ifinsteadofchoosinganewproductyouselectedanewcategory,theDetailsViewwouldrefresh.Whatintheworldisgoingonhere?Theproblemisatimingissueinthepage'slifecycle.Wheneverapageisrequesteditproceedsthroughanumberofstepsasitsrendering.InoneofthesestepstheObjectDataSourcecontrolschecktoseeifanyoftheirSelectParametersvalueshavechanged.Ifso,thedataWebcontrolboundtotheObjectDataSourceknowsthatitneedstorefreshitsdisplay.Forexample,whenanewcategoryisselected,theProductsByCategoryDataSourceObjectDataSourcedetectsthatitsparametervalueshavechangedandtheProductsByCategoryDropDownListrebindsitself,gettingtheproductsfortheselectedcategory.TheproblemthatarisesinthissituationisthatthepointinthepagelifecyclethattheObjectDataSourcescheckforchangedparametersoccursbeforetherebindingoftheassociateddataWebcontrols.Therefore,whenselectinganewcategorytheProductsByCategoryDataSourceObjectDataSourcedetectsachangeinitsparameter'svalue.TheObjectDataSourceusedbytheProductDetailsDetailsView,however,doesn'tnoteanysuchchangesbecausetheProductsByCategoryDropDownListhasyettoberebound.LaterinthelifecycletheProductsByCategoryDropDownListrebindstoitsObjectDataSource,grabbingtheproductsforthenewlyselectedcategory.WhiletheProductsByCategoryDropDownList'svaluehaschanged,theProductDetailsDetailsView'sObjectDataSourcehasalreadydoneitsparametervaluecheck;therefore,theDetailsViewdisplaysitspreviousresults.ThisinteractionisdepictedinFigure20.Figure20:TheProductsByCategoryDropDownListValueChangesAftertheProductDetailsDetailsView'sObjectDataSourceChecksforChanges(Clicktoviewfull-sizeimage)ToremedythisweneedtoexplicitlyrebindtheProductDetailsDetailsViewaftertheProductsByCategoryDropDownListhasbeenbound.WecanaccomplishthisbycallingtheProductDetailsDetailsView'sDataBind()methodwhentheProductsByCategoryDropDownList'sDataBoundeventfires.AddthefollowingeventhandlercodetotheMasterDetailsDetails.aspxpage'scode-behindclass(refertothe"ProgrammaticallySettingtheObjectDataSource'sParameterValues"foradiscussiononhowtoaddaneventhandler):protectedvoidProductsByCategory_DataBound(objectsender,EventArgse){ProductDetails.DataBind();}AfterthisexplicitcalltotheProductDetailsDetailsView'sDataBind()methodhasbeenadded,thetutorialworksasexpected.Figure21highlightshowthischangedremediedourearlierproblem.Figure21:TheProductDetailsDetailsViewisExplicitlyRefreshedWhentheProductsByCategoryDropDownList'sDataBoundEventFires(Clicktoviewfull-sizeimage)SummaryTheDropDownListservesasanidealuserinterfaceelementformaster/detailreportswherethereisaone-to-manyrelationshipbetweenthemasteranddetailrecords.IntheprecedingtutorialwesawhowtouseasingleDropDownListtofiltertheproductsdisplayedbytheselectedcategory.InthistutorialwereplacedtheGridViewofproductswithaDropDownList,andusedaDetailsViewtodisplaythedetailsoftheselectedproduct.Theconceptsdiscussedinthistutorialcaneasilybeextendedtodatamodelsinvolvingmultipleone-to-manyrelationships,suchascustomers,orders,andorderitems.Ingeneral,youcanalwaysaddaDropDownListforeachofthe"one"entitiesintheone-to-manyrelationships.HappyProgramming!AbouttheAuthorScottMitchell,authorofsevenASP/ASP.NETbooksandfounderof4GuysFromR,hasbeenworkingwithMicrosoftWebtechnologiessince1998.Scottworksasanindependentconsultant,trainer,andwriter.HislatestbookisSamsTeachYourselfASP.NET2.0in24Hours.Hecanbereachedatmitchell@4GuysFromR.orviahisblog,whichcanbefoundathttp://ScottOnWriting.NET.ThearticleisfrompartofWorkingwithDatainASP.NET2.0.Site:/learn/dataaccess/default.aspx

使用兩個DropDownList過濾的主/從報表導(dǎo)言在前面的指南中我們研究了如何顯示一個簡單的主/從報表,該報表使用DropDownList和GridView控件,DropDownList填充類別,GridView顯示選定類別的產(chǎn)品。這類報表用于顯示具有一對多關(guān)系的記錄時非常合適,同時它也可以很容易的被擴展以顯示多個一對多關(guān)系的數(shù)據(jù)。比如,一個訂單系統(tǒng)應(yīng)該包含表示客戶,訂單和訂單明細(xì)的表。一個客戶也許有多個訂單,每個訂單又包含多條訂單項。這樣的數(shù)據(jù)可以使用兩個DropDownList和一個GridView呈現(xiàn)給用戶。第一個DropDownList應(yīng)該包含數(shù)據(jù)庫中所有客戶的列表,第二個DropDownList的內(nèi)容是選定客戶的訂單。GridView用于列出所選定訂單的訂單明細(xì)項。第一步:創(chuàng)建DropDownList并使用類別數(shù)據(jù)填充我們的第一個目標(biāo)是添加一個能夠列出類別的DropDownList。這些步驟在前面的指南中已經(jīng)做詳細(xì)的分析,但為了保持本篇指南的完整性有必要在這里簡單概括一下。打開Filtering文件夾中的MasterDetailsDetails.aspx,在頁面上添加一個DropDownList,設(shè)置它的ID為Categories,然后單擊智能標(biāo)記上的ConfigureDataSource鏈接。在數(shù)據(jù)源配置向?qū)е羞x擇新增一個數(shù)據(jù)源。圖1為DropDownList增加一個新的數(shù)據(jù)源當(dāng)然,新的數(shù)據(jù)源應(yīng)該是ObjectDataSource。把新的ObjectDataSource命名為CategoriesDataSource并且讓他調(diào)用CategoriesBLL對象的GetCategories()方法圖2選擇使用CategoriesBLL類圖3配置ObjectDataSource使用GetCategories()方法配置完ObjectDataSource后還需要指定要在DropDownList中顯示的數(shù)據(jù)字段,以及作為數(shù)據(jù)項的值(valueforthelistitem)的數(shù)據(jù)字段。我們指定CategoryName為要顯示的列,指定CategoryID為數(shù)據(jù)項的值字段圖4指定DropDownList顯示CategoryName列并且使用CategoryID列作為數(shù)據(jù)項的值這時,我們就有了一個使用Categories表中的記錄來填充的DropDownList控件。當(dāng)用戶在DropDownList中選擇一個新的類別時,我們需要一次回發(fā),這樣可以刷新在第二步中我們要創(chuàng)建的產(chǎn)品DropDownList控件。所以,categoriesDropDownList的智能標(biāo)記上選中AutoPostBack選項。圖5選中CategoriesDropDownList的AutoPostBack第二步:在第二個DropDownList中顯示選中類別的產(chǎn)品CategoriesDropDownList完成后,下一步就需要一個顯示屬于選定類別的產(chǎn)品的DropDownList了。要完成這個功能,再增加一個DropDownList控件并命名為ProductsByCategory。與CategoriesDropDownList一樣,為ProductsByCategoryDropDownList創(chuàng)建一個新的ObjectDataSource并命名為ProductsByCategoryDataSource。圖6為ProductsByCategoryDropDownList添加新數(shù)據(jù)源圖7創(chuàng)建一個新的ObjectDataSource并命名為ProductsByCategoryDataSource由于ProductsByCategoryDropDownList需要顯示屬于選定類別的產(chǎn)品,讓ObjectDataSource調(diào)用ProductsBLL對象的GetProductsByCategoryID(categoryID)方法。圖8選擇使用ProductsBLL類圖9配置ObjectDataSource使用GetProductsByCategoryID(categoryID)方法在向?qū)У淖詈笠徊叫枰付╟ategoryID的值。我們把CategoriesDropDownList的已選擇的數(shù)據(jù)項項作為該參數(shù)值。圖10使用categoryID參數(shù)從CategoriesDropDownList接收值ObjectDataSource配置完成后,剩下的就是指定DropDownList要顯示的字段和作為值的字段了。設(shè)置為顯示ProductName并把ProductID做為值字段圖11指定DropDownList數(shù)據(jù)項的文本和值使用的數(shù)據(jù)源字段ObjectDataSource和ProductsByCategoryDropDownList配置完成后頁面上會有兩個DropDownList:第一個列出所有的類別,第二個列出屬于選定類別的產(chǎn)品。當(dāng)用戶在第一個DropDownList上選擇了一個新的類別后,將會發(fā)生一次回發(fā)(postback),第二個DropDownList將會重新綁定以顯示屬于新選定類別的產(chǎn)品。圖12和圖13顯示了在瀏覽器中看到的MasterDetailsDetails.aspx頁面。圖12第一次訪問頁面時Beverages類別是選中的。圖13選擇一個不同的類別時顯示該類別的產(chǎn)品圖14激活productsByCategoryDropDownList的AutoPostBack屬性第三步:使用詳細(xì)視圖來顯示所選擇的產(chǎn)品詳細(xì)信息最后一個步驟是在DetailsView中顯示選中產(chǎn)品的詳細(xì)信息。要完成該功能,添加一個DetailsView到頁面上,設(shè)置它的ID屬性為ProductDetails,給它創(chuàng)建一個新的ObjectDataSource。配置ObjectDataSource使它通過ProductsBLL類的GetProductByProductID(productID)方法填充數(shù)據(jù),使用ProductsByCategoryDropDownList的已選擇項的值作為productID參數(shù)的值。圖15選擇使用ProductsBLL類圖16配置ObjectDataSource使用GetProductByProductID(productID)方法圖17使用ProductsByCategoryDropDownList的值作為productID參數(shù)的值你可以選擇在DetailsView顯示的任何有效的字段。我決定不顯示ProductID,SupplierID,和CategoryID字段并且對其余的字段重新排序及格式化。另外,我去掉了DetailsView的Height和Width屬性設(shè)置,允許DetailsView可以擴展到需要的寬度,這樣比把它限制在指定的大小會更好的顯示數(shù)據(jù)。下面便是全部的標(biāo)記性語言(markup):<asp:DetailsViewID="ProductDetails"runat="server"AutoGenerateRows="False"DataKeyNames="ProductID"DataSourceID="ObjectDataSource1"EnableViewState="False"><Fields><asp:BoundFieldDataField="ProductName"HeaderText="Product"SortExpression="ProductName"/><asp:BoundFieldDataField="CategoryName"HeaderText="Category"ReadOnly="True"SortExpression="CategoryName"/><asp:BoundFieldDataField="SupplierName"HeaderText="Supplier"ReadOnly="True"SortExpression="SupplierName"/><asp:BoundFieldDataField="QuantityPerUnit"HeaderText="Qty/Unit"SortExpression="QuantityPerUnit"/><asp:BoundFieldDataField="UnitPrice"DataFormatString="{0:c}"HeaderText="Price"HtmlEncode="False"SortExpression="UnitPrice"/><asp:BoundFieldDataField="UnitsInStock"HeaderText="UnitsInStock"SortExpression="UnitsInStock"/><asp:BoundFieldDataField="UnitsOnOrder"HeaderText="UnitsOnOrder"SortExpression="UnitsOnOrder"/><asp:BoundFieldDataField="ReorderLevel"HeaderText="ReorderLevel"SortExpression="ReorderLevel"/><asp:CheckBoxFieldDataField="Discontinued"HeaderText="Discontinued"SortExpression="Discontinued"/></Fields></asp:DetailsView>花點時間在瀏覽器中測試一下MasterDetailsDetails.aspx頁面。乍一看好像一切如預(yù)計的那樣順利,但是卻有一個小問題。當(dāng)你選擇了一個新類別,ProductsByCategoryDropDownList會更新顯示選中類別的產(chǎn)品,但是ProductDetailsDetailsView還是顯示上一個產(chǎn)品的信息。當(dāng)選擇了一個選中類別的不同的產(chǎn)品時DetailsView應(yīng)該被更新。此外,如果你的測試足夠徹底,你將會發(fā)現(xiàn)如果你不斷的選擇新類別(比如在CategoriesDropDownList中選擇Beverages,然后選擇Condiments,然后是Confections)每個類別的選擇都會使ProductDetailsDetailsView被刷新。為了讓這個問題更具體一些,讓我們看一個例子。當(dāng)你第一次訪問該頁面時,Beverages類別是選中的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論