第9章-ASP的數(shù)據(jù)綁定與綁定控件_第1頁(yè)
第9章-ASP的數(shù)據(jù)綁定與綁定控件_第2頁(yè)
第9章-ASP的數(shù)據(jù)綁定與綁定控件_第3頁(yè)
第9章-ASP的數(shù)據(jù)綁定與綁定控件_第4頁(yè)
第9章-ASP的數(shù)據(jù)綁定與綁定控件_第5頁(yè)
已閱讀5頁(yè),還剩63頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第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ù)庫(kù)中,則可以使用SqlDataSource控件。該控件提供了一個(gè)易于使用的向?qū)В龑?dǎo)用戶完成配置過(guò)程。完成配置后,該控件就可以自動(dòng)調(diào)用ADO.NET中的類(lèi)來(lái)查詢或更新數(shù)據(jù)庫(kù)數(shù)據(jù)。SqlDataSource控件的主要屬性SqlDataSource控件的主要屬性(續(xù))1.使用SqlDataSource控件查詢數(shù)據(jù)【例9-1】演示如何使用SqlDataSource控件為數(shù)據(jù)綁定控件GridView提供數(shù)據(jù)源。參見(jiàn)示例\第09章\DataBind\SqlDataSourceDemo.aspx2.使用參數(shù)過(guò)濾數(shù)據(jù)【例9-2】演示如何按MajorId的值來(lái)顯示學(xué)生信息。參見(jiàn)示例\第09章\DataBind\SqlDataSourceByParam.aspx3.使用SqlDataSource更新數(shù)據(jù)SqlDataSource具有4個(gè)Command屬性,分別為:SelectCommand、UpdateCommand、InsertCommand和DeleteCommand。使用這4個(gè)屬性,可以完成查詢、插入、更新和刪除操作?!纠?-3】演示如何使用SqlDataSource控件完成StuInfo表中數(shù)據(jù)的更新和刪除功能。參見(jiàn)示例\第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類(lèi)型的參數(shù)e具有以下2個(gè)主要屬性:Cancel屬性:指定是否繼續(xù)執(zhí)行插入操作。Command屬性:可以獲取或設(shè)置數(shù)據(jù)庫(kù)命令。例如數(shù)據(jù)庫(kù)連接、SQL命令、參數(shù)集合等。例如,插入后事件代碼如下:protectedvoidSqlDataSource1_Inserted(objectsender,SqlDataSourceStatusEventArgse){ ……}在代碼中,SqlDataSourceStatusEventArgs類(lèi)型的參數(shù)e具有以下幾個(gè)主要屬性:AffectedRows屬性:獲取受數(shù)據(jù)庫(kù)操作影響的行數(shù)。Command屬性:獲取提交到數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)命令。Exception屬性:獲取數(shù)據(jù)庫(kù)的數(shù)據(jù)操作期間引發(fā)的任何異常。ExceptionHandled屬性:獲取或設(shè)置一個(gè)值,該值指示是否已處理數(shù)據(jù)庫(kù)引發(fā)的異常。true表示已處理,false表示未處理。【例9-4】演示如何使用SqlDataSource完成StuInfo表的數(shù)據(jù)插入。參見(jiàn)示例\第09章\DataBind\SqlDataSource_Insert.aspx9.1.2ObjectDataSource數(shù)據(jù)源控件ObjectDataSource控件通過(guò)提供一種將相關(guān)頁(yè)上的數(shù)據(jù)控件綁定到中間層業(yè)務(wù)對(duì)象的方法,為三層結(jié)構(gòu)提供支持。在不使用擴(kuò)展代碼的情況下,ObjectDataSource使用中間層業(yè)務(wù)對(duì)象以聲明方式對(duì)數(shù)據(jù)執(zhí)行選擇、插入、更新、刪除、分頁(yè)、排序、緩存和篩選操作。使用ObjectDataSource對(duì)象的三層結(jié)構(gòu)示意圖如圖所示。

ObjectDataSource控件的常用屬性【例9-5】演示如何通過(guò)ObjectDataSource控件來(lái)查詢、更新和刪除Student數(shù)據(jù)庫(kù)中的StuInfo表的數(shù)據(jù)。完成功能與【例9-3】相同。參見(jiàn)示例\第09章\DataBind\StuInfoDAL.cs和ObjectDataSourceDemo.aspx9.1.3LinqDataSource數(shù)據(jù)源控件LinqDataSource控件是ASP.NET3.5引入的一個(gè)新數(shù)據(jù)源控件,它可以使用.NET3.5的新LINQ功能查詢應(yīng)用程序中的數(shù)據(jù)對(duì)象。LinqDataSource控件的用法與SqlDataSource控件類(lèi)似,也是把在控件上設(shè)置的屬性轉(zhuǎn)換成可以在數(shù)據(jù)源上執(zhí)行的操作。LinqDataSource控件則把屬性設(shè)置轉(zhuǎn)換為有效的LINQ查詢,當(dāng)與數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行交互時(shí),不會(huì)將LinqDataSource控件直接連接到數(shù)據(jù)庫(kù),而是與表示數(shù)據(jù)庫(kù)和表的實(shí)體類(lèi)進(jìn)行交互?!纠?-6】演示如何使用LinqDataSource控件。按專(zhuān)業(yè)查詢學(xué)生信息,功能與【例9-2】相同。參見(jiàn)示例\第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控件的主要功能是通過(guò)數(shù)據(jù)源控件自動(dòng)綁定數(shù)據(jù)源的數(shù)據(jù),然后按照數(shù)據(jù)源中的一行顯示為輸出表中的一行的規(guī)則將數(shù)據(jù)顯示出來(lái)。該控件無(wú)須編寫(xiě)任何代碼即可實(shí)現(xiàn)選擇、排序、分頁(yè)、編輯和刪除功能。

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ù)常常不是簡(jiǎn)單的文本數(shù)據(jù),而是要使用其它類(lèi)型的控件顯示的數(shù)據(jù),例如使用復(fù)選框、圖片框等控件顯示數(shù)據(jù),或者根本不需要顯示的數(shù)據(jù)。在GridView中提供了非常豐富的列的顯示格式。GridView控件的列類(lèi)型BoundField是默認(rèn)的列類(lèi)型,該列將數(shù)據(jù)庫(kù)中的字段顯示為純文本,默認(rèn)情況下,VisualStudio2010將為數(shù)據(jù)源中的列生成這種字段類(lèi)型,VisualStudio2010提供了一個(gè)可視化的列字段編輯器,大大簡(jiǎn)化了創(chuàng)建列的工作。

BoundField字段的常用屬性【例9-7】演示如何定制GridView控件的列。參見(jiàn)示例\第09章\DataBind\GridViewDemo.aspx3.定制GridView的模板列

GridView控件中有一個(gè)重要的列類(lèi)型TemplateField,它可以使用模板完全定制列的內(nèi)容。當(dāng)使用標(biāo)準(zhǔn)的列不能滿足顯示要求時(shí),例如希望在編輯狀態(tài)下,能使用下拉列表框選擇一個(gè)專(zhuān)業(yè),使用單選列表選擇性別,避免輸入。此時(shí)可以考慮使用模板列。GridView控件的模板列【例9-8】演示模板列的使用。本例主要將GridViewDemo.aspx頁(yè)面中的GridView1的“性別”列和“專(zhuān)業(yè)”列轉(zhuǎn)換為模板列。參見(jiàn)示例\第09章\DataBind\GridViewDemo.aspx4.GridView控件事件GridView控件提供可很多事件,可以使用這些事件定制GridView控件的外觀和行為。下面將GridView控件的事件分為3大類(lèi)。控件呈現(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:?jiǎn)螕鬐ridView控件內(nèi)的按鈕時(shí)觸發(fā)。RowUpdating:在GridView更新記錄前觸發(fā)。RowUpdated:在GridView更新記錄后觸發(fā)。RowDeleting:在GridView刪除記錄前觸發(fā)。RowDeleted:在GridView刪除記錄后觸發(fā)。RowCancelingEdit:取消更新記錄時(shí)觸發(fā)。選擇、排序、分頁(yè)事件,分為如下幾種。PageIndexChanging:在當(dāng)前頁(yè)被改變前觸發(fā)。PageIndexChanged:在當(dāng)前頁(yè)被改變后觸發(fā)。Sorting:在排序前觸發(fā)。Sorted:在排序后觸發(fā)。SelectedIndexChanging:在行被選擇之前觸發(fā)。SelectedIndexChanged:在行被選擇后觸發(fā)?!纠?-9】演示如何通過(guò)事件定制GridView控件顯示的外觀。功能要求:顯示學(xué)生信息表,并將所有女生的信息標(biāo)為紅色。在不同記錄間移動(dòng)鼠標(biāo)時(shí),鼠標(biāo)當(dāng)前位置高亮突出顯示。參見(jiàn)示例\第09章\DataBind\GridViewDemo.aspx5.GridView控件的選擇功能通過(guò)GridView控件的SelectedRowStyle屬性設(shè)置選中的效果。單擊選擇按鈕時(shí),頁(yè)面回傳,觸發(fā)GridView控件的SelectedIndexChanging事件和SelectedIndexChanged事件。在這些事件中可以通過(guò)如下屬性獲取選擇值。SelectedIndex屬性:GridView控件所選中行的索引號(hào)。SelectedDataKey屬性:獲取DataKey對(duì)象,該對(duì)象包含GridView控件中選中行的所有數(shù)據(jù)鍵值。SelectedValue屬性:獲取GridView控件中選中行的數(shù)據(jù)鍵值。SelectedRow屬性:獲取對(duì)GridView控件中選中的行。【例9-10】演示GridView控件的選擇功能。當(dāng)用戶選中某條記錄時(shí),在一個(gè)Label控件中顯示出該選中記錄的信息。參見(jiàn)示例\第09章\DataBind\GridViewDemo.aspx6.GridView控件的分頁(yè)和排序功能在GridView控件的任務(wù)面板中選擇“啟用排序”或設(shè)置GridView控件的AllowSorting屬性為true,就能實(shí)現(xiàn)GridView控件的排序功能。

在GridView控件的任務(wù)面板中選擇“啟用分頁(yè)”或設(shè)置GridView控件的AllowPaging屬性為true,就能實(shí)現(xiàn)GridView控件的分頁(yè)功能。通過(guò)設(shè)置PageSize屬性控制每頁(yè)顯示的記錄數(shù),默認(rèn)每頁(yè)顯示10條記錄。9.2.2DetailsView控件GridView控件適合顯示多行數(shù)據(jù)。在某些時(shí)候用戶希望一次只看到某一行中所包含數(shù)據(jù)字段的詳細(xì)數(shù)據(jù),即在頁(yè)面上一次只顯示一條記錄。DetailsView控件的主要功能是以表格形式顯示和處理來(lái)自數(shù)據(jù)源的單條數(shù)據(jù)記錄,其表格只包含兩個(gè)數(shù)據(jù)列。一個(gè)數(shù)據(jù)列逐行顯示數(shù)據(jù)列名,另一個(gè)數(shù)據(jù)列顯示與對(duì)應(yīng)列名相關(guān)的詳細(xì)數(shù)據(jù)值。DetailsView控件提供了與GridView相同的許多數(shù)據(jù)操作和顯示功能,可以對(duì)數(shù)據(jù)進(jìn)行分頁(yè)、更新、插入和刪除。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方法,用來(lái)改變DetailView的顯示模式。將DetailView控件的模式改為編輯模式的代碼如下:DetailsView1.ChangeMode(DetailsViewMode.Edit); 可以在DetailView控件外放置控制DetailView顯示模式的按鈕,當(dāng)單擊不同的模式按鈕時(shí),調(diào)用ChangeMode方法進(jìn)行模式切換。1.使用DetailsView控件【例9-11】演示如何通過(guò)DetailsView控件顯示Student數(shù)據(jù)庫(kù)中StuInfo表的信息。參見(jiàn)示例\第09章\DataBind\DetailsViewDemo.aspx2.定制DetailsView控件的列與GridView控件一樣,DetailsView控件也允許指定要顯示的列。【例9-12】演示如何定制DetailsView控件的列。參見(jiàn)示例\第09章\DataBind\DetailsViewDemo.aspx4.定制DetailsView的模板列DetailsView控件設(shè)置模板列的方法與GridView控件相同?!纠?-14】演示如何定制DetailsView的模板列。為DetailsView控件定制EditItemTemplate和InsertItemTemplate。

(a)編輯狀態(tài) (b)插入狀態(tài)參見(jiàn)示例\第09章\DataBind\DetailsViewDemo.aspx5.GridView和DetailsView控件的聯(lián)合使用最常使用DetailsView控件的地方是主從表,通常用主表來(lái)顯示一些基本信息,而從表則顯示詳細(xì)信息?!纠?-15】演示如何使用GridView控件顯示Student數(shù)據(jù)庫(kù)中StuInfo表的基本信息,DetailsView控件顯示GridView控件中選中行的詳細(xì)的信息。參見(jiàn)示例\第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控件通過(guò)識(shí)別按鈕的CommandName屬性,來(lái)執(zhí)行不同的操作。FormView控件識(shí)別的命令按鈕【例9-16】演示如何通過(guò)綁定FormView控件顯示和編輯數(shù)據(jù)。要求顯示和編輯Student數(shù)據(jù)庫(kù)中StuInfo表的記錄。編輯EditTemplate模板

FormViewDemo.aspx頁(yè)面運(yùn)行效果參見(jiàn)示例\第09章\DataBind\FormViewDemo.aspx9.2.4ListView控件和DataPager控件ListView集成了GridView、DataList、Repeater、DetailsView和FormView控件的所有功能,可以在頁(yè)面上自定義多條記錄的顯示布局。ListView控件允許用戶編輯、插入和刪除數(shù)據(jù),以及對(duì)數(shù)據(jù)進(jìn)行排序和分頁(yè)。ListView控件是一個(gè)相當(dāng)靈活的數(shù)據(jù)綁定控件,該控件不具有默認(rèn)的格式呈現(xiàn),所有格式需要進(jìn)行模板設(shè)計(jì)實(shí)現(xiàn)。ListView控件包含以下11個(gè)模板。LayoutTemplate:定義控件的主要布局的根模板。它包含一個(gè)占位符對(duì)象,例如表行(tr)、div或span元素。此元素將由ItemTemplate模板或GroupTemplate模板中定義的內(nèi)容替換。它還可能包含一個(gè)DataPager對(duì)象。ItemTemplate:定義為各個(gè)項(xiàng)顯示的數(shù)據(jù)綁定內(nèi)容。ItemSeparatorTemplate:定義在各個(gè)項(xiàng)之間呈現(xiàn)的內(nèi)容。GroupTemplate:定義組布局的內(nèi)容。它包含一個(gè)占位符對(duì)象,例如表單元格(td)、div或span。該對(duì)象將由其它模板(例如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用來(lái)顯示數(shù)據(jù)的布局模板,ItemTemplate則是每一條數(shù)據(jù)的顯示模板,將ItemTemplate模板放置在LayoutTemplate模板中可以實(shí)現(xiàn)定制的布局。EditItemTemplate:定義在編輯項(xiàng)時(shí)呈現(xiàn)的內(nèi)容。對(duì)于正在編輯的數(shù)據(jù)項(xiàng),將呈現(xiàn)EditItemTemplate模板以替代ItemTemplate模板。InsertItemTemplate:定義在插入項(xiàng)時(shí)呈現(xiàn)的內(nèi)容。將在ListView控件顯示的項(xiàng)的開(kāi)始或末尾處呈現(xiàn)InsertItemTemplate模板,以替代ItemTemplate模板。通過(guò)使用ListView控件的InsertItemPosition屬性,可以指定InsertItemTemplate模板的呈現(xiàn)位置。1.ListView控件的使用ListView控件的模板布局通常需要手工定義,但ListView控件也提供了5種預(yù)定義的布局。下面分別舉例說(shuō)明。

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論