




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第9章
ASP.NET的數(shù)據(jù)綁定與綁定控件內(nèi)容數(shù)據(jù)源控件
數(shù)據(jù)綁定控件
9.1數(shù)據(jù)源控件SqlDataSource數(shù)據(jù)源控件ObjectDataSource數(shù)據(jù)源控件LinqDataSource數(shù)據(jù)源控件9.1.1SqlDataSource數(shù)據(jù)源控件如果數(shù)據(jù)源存儲(chǔ)在SQLServer、SQLServerExpress、Oracle、Access、DB2及MySQL等數(shù)據(jù)庫中,則可以使用SqlDataSource控件。該控件提供了一個(gè)易于使用的向?qū)?,引?dǎo)用戶完成配置過程。完成配置后,該控件就可以自動(dòng)調(diào)用ADO.NET中的類來查詢或更新數(shù)據(jù)庫數(shù)據(jù)。SqlDataSource控件的主要屬性SqlDataSource控件的主要屬性(續(xù))1.使用SqlDataSource控件查詢數(shù)據(jù)【例9-1】演示如何使用SqlDataSource控件為數(shù)據(jù)綁定控件GridView提供數(shù)據(jù)源。參見示例\第09章\DataBind\SqlDataSourceDemo.aspx2.使用參數(shù)過濾數(shù)據(jù)【例9-2】演示如何按MajorId的值來顯示學(xué)生信息。參見示例\第09章\DataBind\SqlDataSourceByParam.aspx3.使用SqlDataSource更新數(shù)據(jù)SqlDataSource具有4個(gè)Command屬性,分別為:SelectCommand、UpdateCommand、InsertCommand和DeleteCommand。使用這4個(gè)屬性,可以完成查詢、插入、更新和刪除操作?!纠?-3】演示如何使用SqlDataSource控件完成StuInfo表中數(shù)據(jù)的更新和刪除功能。參見示例\第09章\DataBind\SqlDataSource_Update.aspx4.SqlDataSource的事件和方法SqlDataSource控件的主要事件:Selecting:在查詢之前觸發(fā)。Selected:在查詢之后觸發(fā)。Inserting:在插入之前觸發(fā)。Inserted:在插入之后觸發(fā)。Updating:在更新之前觸發(fā)。Updated:在更新之后觸發(fā)。Deleting:在刪除之前觸發(fā)。Deleted:在刪除之后觸發(fā)。例如,插入前事件代碼如下:protectedvoidSqlDataSource1_Inserting(objectsender,SqlDataSourceCommandEventArgse){ ……}在代碼中,SqlDataSourceCommandEventArgs類型的參數(shù)e具有以下2個(gè)主要屬性:Cancel屬性:指定是否繼續(xù)執(zhí)行插入操作。Command屬性:可以獲取或設(shè)置數(shù)據(jù)庫命令。例如數(shù)據(jù)庫連接、SQL命令、參數(shù)集合等。例如,插入后事件代碼如下:protectedvoidSqlDataSource1_Inserted(objectsender,SqlDataSourceStatusEventArgse){ ……}在代碼中,SqlDataSourceStatusEventArgs類型的參數(shù)e具有以下幾個(gè)主要屬性:AffectedRows屬性:獲取受數(shù)據(jù)庫操作影響的行數(shù)。Command屬性:獲取提交到數(shù)據(jù)庫的數(shù)據(jù)庫命令。Exception屬性:獲取數(shù)據(jù)庫的數(shù)據(jù)操作期間引發(fā)的任何異常。ExceptionHandled屬性:獲取或設(shè)置一個(gè)值,該值指示是否已處理數(shù)據(jù)庫引發(fā)的異常。true表示已處理,false表示未處理?!纠?-4】演示如何使用SqlDataSource完成StuInfo表的數(shù)據(jù)插入。參見示例\第09章\DataBind\SqlDataSource_Insert.aspx9.1.2ObjectDataSource數(shù)據(jù)源控件ObjectDataSource控件通過提供一種將相關(guān)頁上的數(shù)據(jù)控件綁定到中間層業(yè)務(wù)對象的方法,為三層結(jié)構(gòu)提供支持。在不使用擴(kuò)展代碼的情況下,ObjectDataSource使用中間層業(yè)務(wù)對象以聲明方式對數(shù)據(jù)執(zhí)行選擇、插入、更新、刪除、分頁、排序、緩存和篩選操作。使用ObjectDataSource對象的三層結(jié)構(gòu)示意圖如圖所示。
ObjectDataSource控件的常用屬性【例9-5】演示如何通過ObjectDataSource控件來查詢、更新和刪除Student數(shù)據(jù)庫中的StuInfo表的數(shù)據(jù)。完成功能與【例9-3】相同。參見示例\第09章\DataBind\StuInfoDAL.cs和ObjectDataSourceDemo.aspx9.1.3LinqDataSource數(shù)據(jù)源控件LinqDataSource控件是ASP.NET3.5引入的一個(gè)新數(shù)據(jù)源控件,它可以使用.NET3.5的新LINQ功能查詢應(yīng)用程序中的數(shù)據(jù)對象。LinqDataSource控件的用法與SqlDataSource控件類似,也是把在控件上設(shè)置的屬性轉(zhuǎn)換成可以在數(shù)據(jù)源上執(zhí)行的操作。LinqDataSource控件則把屬性設(shè)置轉(zhuǎn)換為有效的LINQ查詢,當(dāng)與數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行交互時(shí),不會(huì)將LinqDataSource控件直接連接到數(shù)據(jù)庫,而是與表示數(shù)據(jù)庫和表的實(shí)體類進(jìn)行交互。【例9-6】演示如何使用LinqDataSource控件。按專業(yè)查詢學(xué)生信息,功能與【例9-2】相同。參見示例\第09章\DataBind\Student.dbml和LinqDataSourceDemo.aspx9.2數(shù)據(jù)綁定控件GridView控件DetailsView控件FormView控件ListView控件和DataPager控件9.2.1GridView控件GridView是一個(gè)顯示表格式數(shù)據(jù)的控件,該控件是ASP.NET服務(wù)器控件中功能最強(qiáng)大、最實(shí)用的一個(gè)控件。GridView顯示一個(gè)二維表格式數(shù)據(jù),每列表示一個(gè)字段,每行表示一條記錄。GridView控件的主要功能是通過數(shù)據(jù)源控件自動(dòng)綁定數(shù)據(jù)源的數(shù)據(jù),然后按照數(shù)據(jù)源中的一行顯示為輸出表中的一行的規(guī)則將數(shù)據(jù)顯示出來。該控件無須編寫任何代碼即可實(shí)現(xiàn)選擇、排序、分頁、編輯和刪除功能。
GridView控件的常用屬性1.使用GridView控件啟用GridView控件的編輯和刪除功能;為GridView控件指定了DataKeyNames屬性;為GridView控件設(shè)置主鍵列為StuNo和Name。DataKeyNames="StuNo,Name“獲取第一個(gè)主鍵字段的值,可以按如下代碼進(jìn)行操作。objectkey=GridView1.DataKeys[0].Value;2.定制GridView控件的列GridView控件中的數(shù)據(jù)常常不是簡單的文本數(shù)據(jù),而是要使用其它類型的控件顯示的數(shù)據(jù),例如使用復(fù)選框、圖片框等控件顯示數(shù)據(jù),或者根本不需要顯示的數(shù)據(jù)。在GridView中提供了非常豐富的列的顯示格式。GridView控件的列類型BoundField是默認(rèn)的列類型,該列將數(shù)據(jù)庫中的字段顯示為純文本,默認(rèn)情況下,VisualStudio2010將為數(shù)據(jù)源中的列生成這種字段類型,VisualStudio2010提供了一個(gè)可視化的列字段編輯器,大大簡化了創(chuàng)建列的工作。
BoundField字段的常用屬性【例9-7】演示如何定制GridView控件的列。參見示例\第09章\DataBind\GridViewDemo.aspx3.定制GridView的模板列
GridView控件中有一個(gè)重要的列類型TemplateField,它可以使用模板完全定制列的內(nèi)容。當(dāng)使用標(biāo)準(zhǔn)的列不能滿足顯示要求時(shí),例如希望在編輯狀態(tài)下,能使用下拉列表框選擇一個(gè)專業(yè),使用單選列表選擇性別,避免輸入。此時(shí)可以考慮使用模板列。GridView控件的模板列【例9-8】演示模板列的使用。本例主要將GridViewDemo.aspx頁面中的GridView1的“性別”列和“專業(yè)”列轉(zhuǎn)換為模板列。參見示例\第09章\DataBind\GridViewDemo.aspx4.GridView控件事件GridView控件提供可很多事件,可以使用這些事件定制GridView控件的外觀和行為。下面將GridView控件的事件分為3大類??丶尸F(xiàn)事件,在GridView顯示其數(shù)據(jù)行時(shí)觸發(fā)??煞譃槿缦聨追N。DataBinding:GridView綁定到數(shù)據(jù)源前觸發(fā)。DataBound:GridView綁定到數(shù)據(jù)源后觸發(fā)。RowCreated:GridView中的行被創(chuàng)建后觸發(fā)。RowDataBound:GridView中的每行綁定數(shù)據(jù)后觸發(fā)。編輯記錄事件,分為如下幾種。RowCommand:單擊GridView控件內(nèi)的按鈕時(shí)觸發(fā)。RowUpdating:在GridView更新記錄前觸發(fā)。RowUpdated:在GridView更新記錄后觸發(fā)。RowDeleting:在GridView刪除記錄前觸發(fā)。RowDeleted:在GridView刪除記錄后觸發(fā)。RowCancelingEdit:取消更新記錄時(shí)觸發(fā)。選擇、排序、分頁事件,分為如下幾種。PageIndexChanging:在當(dāng)前頁被改變前觸發(fā)。PageIndexChanged:在當(dāng)前頁被改變后觸發(fā)。Sorting:在排序前觸發(fā)。Sorted:在排序后觸發(fā)。SelectedIndexChanging:在行被選擇之前觸發(fā)。SelectedIndexChanged:在行被選擇后觸發(fā)?!纠?-9】演示如何通過事件定制GridView控件顯示的外觀。功能要求:顯示學(xué)生信息表,并將所有女生的信息標(biāo)為紅色。在不同記錄間移動(dòng)鼠標(biāo)時(shí),鼠標(biāo)當(dāng)前位置高亮突出顯示。參見示例\第09章\DataBind\GridViewDemo.aspx5.GridView控件的選擇功能通過GridView控件的SelectedRowStyle屬性設(shè)置選中的效果。單擊選擇按鈕時(shí),頁面回傳,觸發(fā)GridView控件的SelectedIndexChanging事件和SelectedIndexChanged事件。在這些事件中可以通過如下屬性獲取選擇值。SelectedIndex屬性:GridView控件所選中行的索引號。SelectedDataKey屬性:獲取DataKey對象,該對象包含GridView控件中選中行的所有數(shù)據(jù)鍵值。SelectedValue屬性:獲取GridView控件中選中行的數(shù)據(jù)鍵值。SelectedRow屬性:獲取對GridView控件中選中的行。【例9-10】演示GridView控件的選擇功能。當(dāng)用戶選中某條記錄時(shí),在一個(gè)Label控件中顯示出該選中記錄的信息。參見示例\第09章\DataBind\GridViewDemo.aspx6.GridView控件的分頁和排序功能在GridView控件的任務(wù)面板中選擇“啟用排序”或設(shè)置GridView控件的AllowSorting屬性為true,就能實(shí)現(xiàn)GridView控件的排序功能。
在GridView控件的任務(wù)面板中選擇“啟用分頁”或設(shè)置GridView控件的AllowPaging屬性為true,就能實(shí)現(xiàn)GridView控件的分頁功能。通過設(shè)置PageSize屬性控制每頁顯示的記錄數(shù),默認(rèn)每頁顯示10條記錄。9.2.2DetailsView控件GridView控件適合顯示多行數(shù)據(jù)。在某些時(shí)候用戶希望一次只看到某一行中所包含數(shù)據(jù)字段的詳細(xì)數(shù)據(jù),即在頁面上一次只顯示一條記錄。DetailsView控件的主要功能是以表格形式顯示和處理來自數(shù)據(jù)源的單條數(shù)據(jù)記錄,其表格只包含兩個(gè)數(shù)據(jù)列。一個(gè)數(shù)據(jù)列逐行顯示數(shù)據(jù)列名,另一個(gè)數(shù)據(jù)列顯示與對應(yīng)列名相關(guān)的詳細(xì)數(shù)據(jù)值。DetailsView控件提供了與GridView相同的許多數(shù)據(jù)操作和顯示功能,可以對數(shù)據(jù)進(jìn)行分頁、更新、插入和刪除。DetailView有一個(gè)DefaultMode屬性,可以控制默認(rèn)的顯示模式,該屬性有3個(gè)可選值。DetailsViewMode.Edit:編輯模式,用戶可以更新記錄的值。DetailsViewMode.Insert:插入模式,用戶可以向數(shù)據(jù)源中添加新記錄。DetailsViewMode.ReadOnly:只讀模式,這是默認(rèn)的顯示模式。DetailView控件提供了與切換模式相關(guān)的兩個(gè)事件:ModeChanging事件:在模式切換前觸發(fā);ModeChanged事件:在模式切換后觸發(fā)。DetailView控件提供了ChangeMode方法,用來改變DetailView的顯示模式。將DetailView控件的模式改為編輯模式的代碼如下:DetailsView1.ChangeMode(DetailsViewMode.Edit); 可以在DetailView控件外放置控制DetailView顯示模式的按鈕,當(dāng)單擊不同的模式按鈕時(shí),調(diào)用ChangeMode方法進(jìn)行模式切換。1.使用DetailsView控件【例9-11】演示如何通過DetailsView控件顯示Student數(shù)據(jù)庫中StuInfo表的信息。參見示例\第09章\DataBind\DetailsViewDemo.aspx2.定制DetailsView控件的列與GridView控件一樣,DetailsView控件也允許指定要顯示的列?!纠?-12】演示如何定制DetailsView控件的列。參見示例\第09章\DataBind\DetailsViewDemo.aspx4.定制DetailsView的模板列DetailsView控件設(shè)置模板列的方法與GridView控件相同?!纠?-14】演示如何定制DetailsView的模板列。為DetailsView控件定制EditItemTemplate和InsertItemTemplate。
(a)編輯狀態(tài) (b)插入狀態(tài)參見示例\第09章\DataBind\DetailsViewDemo.aspx5.GridView和DetailsView控件的聯(lián)合使用最常使用DetailsView控件的地方是主從表,通常用主表來顯示一些基本信息,而從表則顯示詳細(xì)信息?!纠?-15】演示如何使用GridView控件顯示Student數(shù)據(jù)庫中StuInfo表的基本信息,DetailsView控件顯示GridView控件中選中行的詳細(xì)的信息。參見示例\第09章\DataBind\DetailsViewDemo.aspx9.2.3FormView控件FormView控件與DetailsView功能相同,也是顯示數(shù)據(jù)源控件中的一個(gè)數(shù)據(jù)項(xiàng),并可以添加、編輯和刪除數(shù)據(jù)。與DetailsView控件的一個(gè)明顯區(qū)別是,F(xiàn)ormView控件完全基于模板,提供了更多的布局控制選項(xiàng)。利用FormView控件操作數(shù)據(jù)源數(shù)據(jù)時(shí),需要為其定制不同的模板,例如為支持插入記錄的FormView控件定義插入項(xiàng)模板等。
FormView控件的常用模板FormView控件不提供自動(dòng)生成命令按鈕以執(zhí)行更新、刪除或插入操作的方法。必須手動(dòng)將這些按鈕添加在不同的模板中。FormView控件通過識(shí)別按鈕的CommandName屬性,來執(zhí)行不同的操作。FormView控件識(shí)別的命令按鈕【例9-16】演示如何通過綁定FormView控件顯示和編輯數(shù)據(jù)。要求顯示和編輯Student數(shù)據(jù)庫中StuInfo表的記錄。編輯EditTemplate模板
FormViewDemo.aspx頁面運(yùn)行效果參見示例\第09章\DataBind\FormViewDemo.aspx9.2.4ListView控件和DataPager控件ListView集成了GridView、DataList、Repeater、DetailsView和FormView控件的所有功能,可以在頁面上自定義多條記錄的顯示布局。ListView控件允許用戶編輯、插入和刪除數(shù)據(jù),以及對數(shù)據(jù)進(jìn)行排序和分頁。ListView控件是一個(gè)相當(dāng)靈活的數(shù)據(jù)綁定控件,該控件不具有默認(rèn)的格式呈現(xiàn),所有格式需要進(jìn)行模板設(shè)計(jì)實(shí)現(xiàn)。ListView控件包含以下11個(gè)模板。LayoutTemplate:定義控件的主要布局的根模板。它包含一個(gè)占位符對象,例如表行(tr)、div或span元素。此元素將由ItemTemplate模板或GroupTemplate模板中定義的內(nèi)容替換。它還可能包含一個(gè)DataPager對象。ItemTemplate:定義為各個(gè)項(xiàng)顯示的數(shù)據(jù)綁定內(nèi)容。ItemSeparatorTemplate:定義在各個(gè)項(xiàng)之間呈現(xiàn)的內(nèi)容。GroupTemplate:定義組布局的內(nèi)容。它包含一個(gè)占位符對象,例如表單元格(td)、div或span。該對象將由其它模板(例如ItemTemplate和EmptyItemTemplate模板)中定義的內(nèi)容替換。GroupSeparatorTemplate:定義在項(xiàng)組之間呈現(xiàn)的內(nèi)容。EmptyItemTemplate:定義在使用GroupTemplate模板時(shí)為空項(xiàng)呈現(xiàn)的內(nèi)容。例如,如果將GroupItemCount屬性設(shè)置為5,而從數(shù)據(jù)源返回的總項(xiàng)數(shù)為8,則ListView控件顯示的最后一行數(shù)據(jù)將包含ItemTemplate模板指定的3個(gè)項(xiàng)以及EmptyItemTemplate模板指定的2個(gè)項(xiàng)。EmptyDataTemplate:定義在數(shù)據(jù)源未返回?cái)?shù)據(jù)時(shí)要呈現(xiàn)的內(nèi)容。SelectedItemTemplate:定義所選項(xiàng)呈現(xiàn)的內(nèi)容,用以區(qū)分所選數(shù)據(jù)項(xiàng)與其它項(xiàng)。AlternatingItemTemplate:定義交替項(xiàng)呈現(xiàn)的內(nèi)容,以便區(qū)分連續(xù)項(xiàng)。ListView中至少必需包含兩個(gè)模板:LayoutTemplate和ItemTemplate。LayoutTemplate模板是ListView用來顯示數(shù)據(jù)的布局模板,ItemTemplate則是每一條數(shù)據(jù)的顯示模板,將ItemTemplate模板放置在LayoutTemplate模板中可以實(shí)現(xiàn)定制的布局。EditItemTemplate:定義在編輯項(xiàng)時(shí)呈現(xiàn)的內(nèi)容。對于正在編輯的數(shù)據(jù)項(xiàng),將呈現(xiàn)EditItemTemplate模板以替代ItemTemplate模板。InsertItemTemplate:定義在插入項(xiàng)時(shí)呈現(xiàn)的內(nèi)容。將在ListView控件顯示的項(xiàng)的開始或末尾處呈現(xiàn)InsertItemTemplate模板,以替代ItemTemplate模板。通過使用ListView控件的InsertItemPosition屬性,可以指定InsertItemTemplate模板的呈現(xiàn)位置。1.ListView控件的使用ListView控件的模板布局通常需要手工定義,但ListView控件也提供了5種預(yù)定義的布局。下面分別舉例說明。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中級微觀經(jīng)濟(jì)學(xué)知到課后答案智慧樹章節(jié)測試答案2025年春浙江大學(xué)
- 2025年天一大聯(lián)考海南省高三2月英語試題模擬試題含解析
- 寧夏警官職業(yè)學(xué)院《外國民族音樂概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 焦作大學(xué)《泰語口語》2023-2024學(xué)年第二學(xué)期期末試卷
- 江西理工大學(xué)《過程裝備集成科學(xué)與技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東海洋大學(xué)《紡織綠色制造》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川省綿陽市游仙區(qū)2025年數(shù)學(xué)五下期末檢測模擬試題含答案
- 上海市格致初級中學(xué)2025年高考模擬(4月)英語試題含解析
- 工傷認(rèn)定風(fēng)險(xiǎn)點(diǎn)和防范措施
- 2025年五氧化二磷行業(yè)政策分析:五氧化二磷行業(yè)標(biāo)準(zhǔn)規(guī)范行業(yè)發(fā)展
- 高等教育數(shù)字化轉(zhuǎn)型心得體會(huì)
- 2025年安徽財(cái)貿(mào)職業(yè)學(xué)院單招職業(yè)技能測試題庫及答案1套
- 2025年安徽職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案1套
- 日式保潔培訓(xùn)課件大全
- 2025年廣東省深圳市高考語文一模試卷
- 2025年陜西工商職業(yè)學(xué)院單招職業(yè)技能測試題庫學(xué)生專用
- 2025年福建省高職單招職業(yè)適應(yīng)性測試題庫及答案解析
- 自媒體運(yùn)營實(shí)戰(zhàn)教程(抖音版) 課件 第7章 短視頻運(yùn)營-自媒體中級
- 2025時(shí)事政治必考題庫含參考答案
- 保潔管理安全培訓(xùn)課件
- 小學(xué)生藥品安全課件視頻
評論
0/150
提交評論