![四:使用ObjectDataSource展現(xiàn)數(shù)據(jù)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/15/2458e565-8b6d-4136-b476-badaa7f86907/2458e565-8b6d-4136-b476-badaa7f869071.gif)
![四:使用ObjectDataSource展現(xiàn)數(shù)據(jù)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/15/2458e565-8b6d-4136-b476-badaa7f86907/2458e565-8b6d-4136-b476-badaa7f869072.gif)
![四:使用ObjectDataSource展現(xiàn)數(shù)據(jù)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/15/2458e565-8b6d-4136-b476-badaa7f86907/2458e565-8b6d-4136-b476-badaa7f869073.gif)
![四:使用ObjectDataSource展現(xiàn)數(shù)據(jù)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/15/2458e565-8b6d-4136-b476-badaa7f86907/2458e565-8b6d-4136-b476-badaa7f869074.gif)
![四:使用ObjectDataSource展現(xiàn)數(shù)據(jù)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/15/2458e565-8b6d-4136-b476-badaa7f86907/2458e565-8b6d-4136-b476-badaa7f869075.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、在ASP.NET 2.0中操作數(shù)據(jù)之四:使用ObjectDataSource展現(xiàn)數(shù)據(jù)作者:heker2007 字體:增加減小 類型:轉(zhuǎn)載 時間:2016-04-29我要評論前面介紹搭建基礎(chǔ)的架構(gòu),下面我們來介紹ASP.NET中,如何利用ObjectDataSource來展現(xiàn)數(shù)據(jù)。通過配置ObjectDataSource,我們指定這些底層的對象,還有這些對象的方法如何映射到ObjectDataSource的Select、Insert、Update和Delete方法。在完成了應(yīng)用程序架構(gòu)和頁面的設(shè)計后,我們可以開始探討如何實現(xiàn)多種多樣的普通數(shù)據(jù)到報表展現(xiàn)的任務(wù)。前面我們已經(jīng)了解到如何在從數(shù)據(jù)訪問層
2、和業(yè)務(wù)邏輯層綁定數(shù)據(jù)到ASP.NET頁面上的數(shù)據(jù)控件。在ASP.NET 1.x應(yīng)用程序中,通過對數(shù)據(jù)控件的DataSource屬性賦值然后調(diào)用控件的DataBind()方法從而實現(xiàn)數(shù)據(jù)展現(xiàn)的方式在ASP.NET 2.0應(yīng)用程序中可以繼續(xù)使用。然而,ASP.NET 2.0的數(shù)據(jù)源控件提供了一種新的方式,使用這些控件可以讓你輕松從上文中創(chuàng)建的業(yè)務(wù)邏輯層中進行數(shù)據(jù)綁定,甚至不需要手寫一行的代碼。ASP.NET 2.0提供了五種內(nèi)置的數(shù)據(jù)源控件:SqlDataSource、AccessDataSource,、ObjectDataSource、XmlDataSource、和SiteMapDataSour
3、ce,盡管如果有需要的話你還可以構(gòu)建自己的自定義數(shù)據(jù)源控件(custom data source controls)。既然我們在前文中已經(jīng)完成了應(yīng)用程序示例的系統(tǒng)架構(gòu),基于已有的業(yè)務(wù)邏輯類我們將使用ObjectDataSource。圖1: ASP.NET 2.0包括五種內(nèi)置的數(shù)據(jù)源控件ObjectDataSource充當別的對象的代理。通過配置ObjectDataSource,我們指定這些底層的對象,還有這些對象的方法如何映射到ObjectDataSource的Select、Insert、Update和Delete方法。一旦底層的對象被指定并且其方法映射到ObjectDataSource的方法
4、后,我們就可以把ObjectDataSource綁定到頁面上的Data Web 服務(wù)器控件。ASP.NET提供了許多Data Web 服務(wù)器控件,包括GridView、DetailsView、RadioButtonList和DropDownList等等。在頁面的生命周期中,Data Web 服務(wù)器控件可能需要訪問它所綁定的數(shù)據(jù),這將通過調(diào)用ObjectDataSource的Select方法來實現(xiàn);如果這個Data Web 服務(wù)器控件還支持插入、更新或者刪除,那么將調(diào)用ObjectDataSource的Insert、Update或者Delete方法。這些調(diào)用會通過ObjectDataSource
5、被發(fā)送到適當?shù)牡讓訉ο蟮姆椒?,如下圖所示。圖2:ObjectDataSource充當一個代理雖然ObjectDataSource被用來實現(xiàn)插入、更新或者刪除數(shù)據(jù),但暫時我們只集中討論返回數(shù)據(jù),以后的章節(jié)再探討使用ObjectDataSource和Data Web 服務(wù)器控件實現(xiàn)數(shù)據(jù)修改。第一步:添加和配置ObjectDataSource控件首先,打開BasicReporting文件夾中的SimpleDisplay.aspx頁面,切換到設(shè)計視圖,從工具箱拖拽一個ObjectDataSource控件到頁面。它在設(shè)計界面顯示為一個灰色的方塊,這是因為它不產(chǎn)生任何的聲明標記;它僅僅是通過調(diào)用制定的對象
6、的方法存取數(shù)據(jù)。通過ObjectDataSource返回的數(shù)據(jù)可以展現(xiàn)到Data Web 服務(wù)器控件,例如GridView、DetailsView、FormView等等。注意:作為另一種選擇,你也可以先在頁面上添加一個Data Web 服務(wù)器控件,然后“顯示智能標記”,從“選擇數(shù)據(jù)源”下拉框中選擇新建數(shù)據(jù)源進入數(shù)據(jù)源配置向?qū)硖砑右粋€ObjectDataSource。為了指定ObjectDataSource的底層對象并且把該對象的方法映射到ObjectDataSource的的方法,可以點擊ObjectDataSource的智能標記中的“配置數(shù)據(jù)源”鏈接進入數(shù)據(jù)源配置向?qū)?。圖3: 點擊智能標記中
7、的“配置數(shù)據(jù)源”鏈接這將進入數(shù)據(jù)源配置向?qū)?。首先,我們需要給ObjectDataSource指定一個業(yè)務(wù)對象。如果勾選上“只顯示數(shù)據(jù)組件”,那么下拉框中就僅僅顯示出那些以DataObject特征修飾過的對象。當前這個列表中應(yīng)該包含了類型化數(shù)據(jù)集中表適配器對象(TableAdapters)和前文中我們已經(jīng)創(chuàng)建的業(yè)務(wù)對象。如果你忘了給業(yè)務(wù)邏輯類增加DataObject特征,那么當前列表中講看不到它們。如果是那樣的話,你也可以不勾選“只顯示數(shù)據(jù)組件”從而看見所有對象,這就可以把業(yè)務(wù)對象包含進來(連同類型化數(shù)據(jù)集中的其他類 DataTables、 DataRows等等)在第一屏中從下拉列表中選擇業(yè)務(wù)對
8、象ProductsBLL ,然后點擊“下一步”。圖4: 指定ObjectDataSource 控件使用的業(yè)務(wù)對象在下一屏中向?qū)е心憧梢赃x擇ObjectDataSource要調(diào)用的方法。下拉列表中方法是從上一屏中選定的業(yè)務(wù)對象獲得的。這里我們可以看到GetProductsByProductID,GetProducts,GetProductsByCategoryID和GetProductsBySupplierID這幾個方法。從下拉列表中選擇方法GetProducts然后點擊“完成”(如果你已經(jīng)像前文展示那樣給ProductBLL的方法增加了DataObjectMethod特征,那么該項會被默認選中
9、)。圖5: 從“Select”Tab頁選擇返回數(shù)據(jù)的方法手工配置ObjectDataSourceObjectDataSource配置向?qū)峁┝艘粋€快捷的方式來指定它使用的對象并關(guān)聯(lián)需要調(diào)用的方法。不過,你也可以通過它的屬性來配置ObjectDataSource,不管是通過屬性窗口還是直接在聲明標記里。只需簡單地將TypeName屬性設(shè)置為使用的業(yè)務(wù)對象的名稱,將SelectMethod屬性設(shè)置為提取數(shù)據(jù)時需要調(diào)用的方法名稱。?1234567盡管你可能更喜歡數(shù)據(jù)源配置向?qū)В袝r你還是需要手工配置ObjectDataSource,因為配置向?qū)е涣谐鲆呀?jīng)開發(fā)的類。如果你希望把ObjectDataS
10、ource綁定到.NET Framework里的類例如 Membership class來存取登陸用戶信息,或者Directory class 來管理文件系統(tǒng)信息,那么你就需要手工設(shè)置ObjectDataSource的屬性。第二步:添加一個Data Web服務(wù)器控件并將它綁定到ObjectDataSource在ObjectDataSource添加到頁面并完成配置之后,我們就可以添加一個Data Web服務(wù)器控件到頁面來展現(xiàn)通過ObjectDataSource的Select方法返回的數(shù)據(jù)。所有的Data Web服務(wù)器控件都可以綁定到ObjectDataSource;下面我們看看如何將Object
11、DataSource的數(shù)據(jù)展現(xiàn)到GridView、DetailsView、和 FormView 。綁定一個GridView到ObjectDataSource從工具箱添加一個GridView控件到頁面SimpleDisplay.aspx的設(shè)計界面。從GridView的智能標記,選擇我們在第一步中添加的ObjectDataSource控件作為數(shù)據(jù)源。這將根據(jù)ObjectDataSource的Select方法所返回數(shù)據(jù)的每一個屬性(即類型化數(shù)據(jù)集Products所定義的屬性)自動地在GridView控件里產(chǎn)生一個綁定列(BoundField)。圖6: 添加一個GridView控件到頁面并綁定到Obj
12、ectDataSource圖7: 通過編輯列對話框管理GridView控件的綁定列花一些時間修改GridView控件的綁定列,移除ProductID, SupplierID, CategoryID, QuantityPerUnit, UnitsInStock, UnitsOnOrder, 和 ReorderLevel這幾列。操作很簡單,從左下方的列表中選中這些列然后點擊刪除按鈕(紅色交叉)就可以移除它們。然后,重新排列一下,選中CategoryName 和 SupplierName兩個綁定列并點擊向上箭頭按鈕,使它們排放在UnitPrice列之前。分別設(shè)置Products、Category、S
13、upplier和 Price這幾個剩下的綁定列的HeaderText屬性。然后,格式化Price列為貨幣設(shè)置該綁定列的HtmlEncode屬性為False并且設(shè)置DataFormatString屬性為0:c 。最后,通過ItemStyle/HorizontalAlign屬性設(shè)置綁定列Price的水平靠右對齊以及CheckBox列Discontinued水平居中顯示。?123456789101112131415161718192021222324252627圖 8: GridView控件的綁定列定制完成使用主題(Themes)保持顯示風(fēng)格的一致這里會盡可能地移除控件層面的樣式設(shè)置,取而代之的是使
14、用在一個外部文件里定義的級聯(lián)樣式表。文件Styles.css包含了DataWebControlStyle、HeaderStyle、RowStyle和 AlternatingRowStyle 這幾種CSS樣式可以用來指示Data Web服務(wù)器控件的外觀。為了實現(xiàn)這一點,我們可以設(shè)置GridView控件的CssClass屬性為DataWebControlStyle,HeaderStyle、RowStyle和 AlternatingRowStyle的CssClass屬性也類似地設(shè)置。如果我們設(shè)置了這些CssClass屬性到Web控件,那么我們不得不記得明確地把每一個屬性的值和每一個Data Web服
15、務(wù)器控件記錄到我們的手冊中。一種更為方便管理的方法是使用一個Theme定義CSS樣式跟GridView、 DetailsView和FormView控件的屬性之間的關(guān)聯(lián)關(guān)系。Theme是一個控件層面的屬性設(shè)置、圖片和CSS樣式的集合,它可以應(yīng)用到整個站點的所有頁面強制約束外貌和感觀。我們的Theme將不會包含圖片和CSS文件(我們會把stylesheet Styles.css文件照舊留在web應(yīng)用程序的根目錄下),但是它會包含兩個外觀(Skin)。外觀是一個包含Web控件的默認屬性設(shè)置的文件。特別地,我們將創(chuàng)建一個Skin文件為GridView和 DetailsView定義外觀,標示默認的Css
16、Class關(guān)聯(lián)的屬性。在解決方案資源管理器里選中當前項目,從右鍵菜單中選擇“添加新項”,添加一個外觀文件到你的項目并命名為GridView.skin 。圖9: 添加一個外觀文件并命名為GridView.skinSkin files need to be placed in a Theme, which are located in the App_Themes folder. Since we dont yet have such a folder, Visual Studio will kindly offer to create one for us when adding our fir
17、st Skin. Click Yes to create the App_Theme folder and place the new GridView.skin file there.外觀文件需要被放置到一個主題里,而主題文件則存放在App_Themes文件夾里。因為我們目前還沒有這個文件夾,當我們添加第一個外觀文件時,Visual Studio會友善地提議為我們創(chuàng)建一個。點擊“是”,自動創(chuàng)建App_Theme文件夾并把剛剛添加的GridView.skin文件放置在那里。圖 10: 讓Visual Studio自動創(chuàng)建App_Theme文件夾這將在App_Themes文件夾中自動創(chuàng)建一個主題
18、,主題名稱為GridView并包含了外觀文件GridView.skin 。圖 11: 主題GridView已被添加到 App_Theme 文件夾把主題GridView重命名為DataWebControls(從GridView文件夾右鍵菜單中選擇重命名)。然后,進入下面所見的GridView.skin文件的標記:?123456789101112131415161718192021 使用了主題DataWebControls后,這將定義任何一個頁面中任何一個GridView控件與CssClass相關(guān)屬性的默認值。讓我們添加一個另一個針對DetailsView控件的外觀,這個控件我們不久就會用到。在主
19、題DataWebControls添加一個命名為DetailsView.skin的外觀,并加入如下的標記:關(guān)于我們的主題設(shè)置,最后一部就是將主題應(yīng)用到我們的ASP.NET頁面。一個主題可以一頁一頁地應(yīng)用到頁面,也可以應(yīng)用到一個站點下的所有頁面。讓我們把主題應(yīng)用到站點下的所有頁面。為了實現(xiàn)這一點,在Web.config的片斷里加入下面的標記:這就順利完成了!在主題樣式表里預(yù)設(shè)的屬性將不會覆蓋直接在控件層面設(shè)定的屬性。如果希望主題里的設(shè)置高于控件的設(shè)置,則需要在主題樣式表里使用主題特征;然而不幸地,主題特征的設(shè)置并不出現(xiàn)在Visual Studio 的邏輯視圖。查閱 ASP.NET Themes a
20、nd Skins Overview 和 Server-Side Styles Using Themes 獲取更多的關(guān)于主題和外觀的信息; 查看 How To: Apply ASP.NET Themes 獲得更多的關(guān)于如何配置頁面去使用一個主題的信息。圖 12: The GridView顯示 Products Name, Category, Supplier, Price, and Discontinued Information在 DetailsView控件里每次顯示一條數(shù)據(jù)在GridView控件里,從綁定的數(shù)據(jù)源控件返回的數(shù)據(jù)每條記錄會被顯示為一行。然而有時候,我們僅僅需要顯示一條單獨的記錄
21、,或者每次只顯示一條記錄。DetailsView控件提供了這個功能,它表現(xiàn)為一個兩列的HTML的,每一行顯示一個字段或者一個屬性。你可以想象DetailsView是只有一條數(shù)據(jù)的GridView翻轉(zhuǎn)90度。首先,在頁面SimpleDisplay.aspx里GridView控件的上方添加一個DetailsView控件。然后,把它綁定到GridView的同一個ObjectDataSourc控件。正如GridView控件那樣,它會根據(jù)ObjectDataSource的Select方法所返回的數(shù)據(jù),每一個屬性生成一個綁定列。唯一不同的是,DetailsView的綁定列是水平排列的。圖 13: 添加一個
22、DetailsView 控件到頁面并綁定到ObjectDataSource類似GridView,DetailsView的綁定列也可以調(diào)整提供一些用戶化的展現(xiàn)。圖14展示了DetailsView控件在設(shè)置好綁定列和CssClass屬性后使它的外觀類似于GridView的例子。圖 14: DetailsView 控件顯示一條記錄注意DetailsView控件只顯示它的數(shù)據(jù)源里的第一條記錄。為了讓用戶可以瀏覽所有記錄,我們必須允許DetailsView分頁。為了實現(xiàn)這個,回到Visual Studio,在DetailsView的智能標記中勾選上“啟用分頁”。圖 15: 允許DetailsView 控
23、件分頁圖 16: 啟用分頁后,DetailsView控件允許用戶查看任何一個Products以后的教程中中我們將詳細討論關(guān)于分頁。一種更靈活的排版用作每次顯示一條記錄使用DetailView展現(xiàn)ObjectDataSource返回的每一條數(shù)據(jù)顯得有些呆板。我們可能會需要更靈活的數(shù)據(jù)展現(xiàn)方式。例如,在每一個單獨的行里,在顯示products name, category, supplier, price, 和 discontinued information這些信息的基礎(chǔ)上,我們可能需要product name 和 price兩列顯示的列頭,而category 和 supplier則以較小的字體
24、顯示在name和price下方。另外,我們也許不太在意屬性名(Product, Category,等等)顯示在屬性值后面。FormView控件提供了這個層面的用戶化定制。在使用字段的基礎(chǔ)上(像GridView 和 DetailsView那樣),F(xiàn)ormView控件使用模版,這可以讓我們混合使用Web服務(wù)器控件,靜態(tài)的HTML和綁定語法(databinding syntax)。如果你熟悉ASP.NET 1.x中的Repeater控件,你可以認為FormView是只顯示一條記錄的Repeater 。在頁面SimpleDisplay.aspx的設(shè)計界面添加一個FormView控件。一開始FromView控件顯示為一個灰色的方塊,并告知我們需要編輯模版內(nèi)容,需要使用ItemTemplate 。圖 17: FormView必須包含一個ItemTemplate你可以通過FormView的智能標記直接給它綁定一個數(shù)據(jù)源控件,這將自動創(chuàng)建一個默認的ItemTemplate(如果ObjectDataSource設(shè)置了InsertMethod 和 UpdateMethod,那么同時也會自動創(chuàng)建EditItemTemplate 和 InsertItemTemplate)。不過,這里的示例我們將手工綁定FormView并設(shè)置其
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 施工安全協(xié)議書的法律法規(guī)與標準依據(jù)
- 2025年醫(yī)藥公司宿舍房屋租賃合同范文
- 2025年債權(quán)債務(wù)清算執(zhí)行協(xié)議
- 2025年建筑現(xiàn)澆樓板合同樣本
- 2025年光學(xué)計量標準器具項目提案報告模板
- 2025年企業(yè)籌資借款策劃合同范本
- 2025年住宅購置合同樣式
- 2025年臨時員工聘用協(xié)議規(guī)定
- 2025年個人司機工作合同
- 2025年企業(yè)消費信貸擔(dān)保協(xié)議范本
- 2025年江蘇省宿遷市事業(yè)單位引進名校優(yōu)生120人歷年高頻重點提升(共500題)附帶答案詳解
- 人教版四年級上冊寒假數(shù)學(xué)計算題天天練及答案(共15天)
- 2024人教版英語七年級下冊《Unit 3 Keep Fit How do we keep fit》大單元整體教學(xué)設(shè)計2022課標
- 山東省海洋知識競賽(初中組)考試題及答案
- 藥品流通監(jiān)管培訓(xùn)
- JD37-009-2024 山東省存量更新片區(qū)城市設(shè)計編制技術(shù)導(dǎo)則
- 《廣西高標準農(nóng)田耕地質(zhì)量評價工作 指導(dǎo)手冊》
- 人教版四年級下冊數(shù)學(xué)全冊教案含反思
- 北京市海淀區(qū)重點中學(xué)2025屆高考數(shù)學(xué)押題試卷含解析
- 霧化吸入技術(shù)教學(xué)課件
- 2024EPC施工總包合同范本
評論
0/150
提交評論