版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)綁定技術(shù)原理ASP.NET數(shù)據(jù)綁定技術(shù)之?dāng)?shù)據(jù)綁定技術(shù)原理ASP.NET數(shù)據(jù)綁定技術(shù)之主要內(nèi)容數(shù)據(jù)綁定原理GridView基礎(chǔ)知識(shí)GridView應(yīng)用實(shí)例數(shù)據(jù)綁定控件的組合使用2主要內(nèi)容數(shù)據(jù)綁定原理21數(shù)據(jù)綁定原理只有知其所以然才能知其然1數(shù)據(jù)綁定原理只有知其所以然才能知其然引例:直觀了解數(shù)據(jù)綁定現(xiàn)場(chǎng)編程展示(參考示例:UseDataBind)4引例:直觀了解數(shù)據(jù)綁定現(xiàn)場(chǎng)編程展示(參考示例:UseData數(shù)據(jù)綁定的層次結(jié)構(gòu)數(shù)據(jù)庫(kù)ADO.NET數(shù)據(jù)綁定控件數(shù)據(jù)源控件5提供顯示和編輯數(shù)據(jù)的可視化界面IDataSourceDataSourceView提供對(duì)數(shù)據(jù)的訪問(wèn)接口:增、刪、改、查與數(shù)據(jù)庫(kù)交互,完成信息的增、刪、改、查工作。信息的存放地調(diào)用存取數(shù)據(jù)綁定的層次結(jié)構(gòu)數(shù)據(jù)庫(kù)ADO.NET數(shù)據(jù)綁定控件數(shù)據(jù)源控件常用的數(shù)據(jù)綁定控件控件名稱說(shuō)明GridView以表格的方式顯示和編輯數(shù)據(jù),DetailsView一次顯示、編輯、插入或刪除一條記錄。默認(rèn)情況下,DetailsView控件將記錄的每個(gè)字段顯示在它自己的一行內(nèi)。FormViewFormView控件與DetailsView控件相似,一次也只能顯示或編輯一條記錄。FormView需要給其設(shè)定一個(gè)模板。DataList控件可以用某種用戶指定的格式來(lái)顯示數(shù)據(jù)(比如分列顯示),這種格式由模板和樣式進(jìn)行定義。RepeaterRepeater控件沒(méi)有包含內(nèi)置的布局或樣式,需要由Web開(kāi)發(fā)者指定所有的用于顯示數(shù)據(jù)的內(nèi)部控件和顯示樣式ListViewASP.NET3.5新增,以嵌套容器模板和占位符的方式提供靈活的數(shù)據(jù)顯示模式6常用的數(shù)據(jù)綁定控件控件名稱說(shuō)明GridView以表格的方式顯常用的數(shù)據(jù)源控件SqlDataSource可以連接到
ADO.NET支持的任何
SQL數(shù)據(jù)庫(kù)。AccessDataSource連接到使用
MicrosoftOffice創(chuàng)建的
Access數(shù)據(jù)庫(kù)。ObjectDataSource連接到應(yīng)用程序的
Bin或
App_Code目錄中的中間層業(yè)務(wù)對(duì)象或數(shù)據(jù)集。XmlDataSource連接到
XML文件。SitemapDataSource連接到此應(yīng)用程序的站點(diǎn)導(dǎo)航樹(shù)(要求應(yīng)用程序根目錄處有一個(gè)有效的站點(diǎn)地圖文件,默認(rèn)的文件名為“Web.sitemap”),站點(diǎn)地圖文件其實(shí)也是一個(gè)XML文件。LINQDataSource.NET3.0新增,可以訪問(wèn)各種類型的數(shù)據(jù),包括數(shù)據(jù)庫(kù)和XML文件。與C#/VB.NET等.NET語(yǔ)言直接集成。7常用的數(shù)據(jù)源控件SqlDataSource可以連接到ADO多種可綁定的數(shù)據(jù)對(duì)象除了綁定到數(shù)據(jù)源這種具有很強(qiáng)功能的對(duì)象之外,數(shù)據(jù)綁定控件還可以綁定到最小實(shí)現(xiàn)了IEnumerable接口的集合對(duì)象(比如數(shù)組/HashTable/List<T>)。另外,通過(guò)使用數(shù)據(jù)綁定表達(dá)式,可以將一些數(shù)據(jù)綁定控件直接與某個(gè)函數(shù)或?qū)傩赃M(jìn)行綁定。8多種可綁定的數(shù)據(jù)對(duì)象除了綁定到數(shù)據(jù)源這種具有很強(qiáng)功能的對(duì)象之?dāng)?shù)據(jù)綁定的三種實(shí)現(xiàn)方式:將數(shù)據(jù)綁定控件的DataSourceID設(shè)定為數(shù)據(jù)源控件,數(shù)據(jù)綁定控件即可充分利用數(shù)據(jù)源控件的功能實(shí)現(xiàn)對(duì)數(shù)據(jù)的“增刪改查”。這稱為“自動(dòng)數(shù)據(jù)綁定”。也可以不使用DataSourceID,而是直接將數(shù)據(jù)源賦值給數(shù)據(jù)綁定控件的DataSource屬性,然后再調(diào)用數(shù)據(jù)綁定控件的DataBind()方法實(shí)現(xiàn)“手工數(shù)據(jù)綁定”?;蛘咧苯釉陧?yè)面中放置綁定表達(dá)式,然后在Page_Load中調(diào)用頁(yè)面類的DataBind()方法實(shí)現(xiàn)數(shù)據(jù)綁定。9數(shù)據(jù)綁定的三種實(shí)現(xiàn)方式:將數(shù)據(jù)綁定控件的DataSource數(shù)據(jù)綁定表達(dá)式第一步:設(shè)定數(shù)據(jù)表達(dá)式
<%#數(shù)據(jù)綁定表達(dá)式%>第二步:執(zhí)行Page類中的Bind()方法。Demo:UseDataBind(DataBindingExpression.aspx)10重要編程提示:直接在頁(yè)面中嵌入C#代碼的方法:<%=C#代碼%>無(wú)需調(diào)用Page.Bind()方法,上述代碼總是執(zhí)行。數(shù)據(jù)綁定表達(dá)式第一步:設(shè)定數(shù)據(jù)表達(dá)式10重要編程提示:理解“數(shù)據(jù)綁定模板”由于要顯示的數(shù)據(jù)通常包含多條結(jié)構(gòu)類似的記錄,因此,經(jīng)常使用“模板(Template)”來(lái)指定單條記錄的顯示格式,然后,數(shù)據(jù)綁定控件自動(dòng)將這一定義好的模板應(yīng)用于所有要顯示的記錄??梢葬槍?duì)不同的場(chǎng)景定義不同的模板,比如為瀏覽狀態(tài)顯示一個(gè)只讀的模板(通常用Label來(lái)表達(dá)信息),然后為編輯狀態(tài)顯示另一個(gè)模板(通常用TextBox來(lái)向用戶提供修改信息的手段)。大多數(shù)數(shù)據(jù)綁定控件都提供了相應(yīng)的方法在不同的狀態(tài)間切換(比如從瀏覽切換到編輯狀態(tài)),并會(huì)自動(dòng)加載相應(yīng)的模板,與此同時(shí),還會(huì)激發(fā)相應(yīng)的事件。11理解“數(shù)據(jù)綁定模板”由于要顯示的數(shù)據(jù)通常包含多條結(jié)構(gòu)類似的記在數(shù)據(jù)綁定模板中綁定數(shù)據(jù)(1)當(dāng)一個(gè)ASP.NET控件位于一個(gè)數(shù)據(jù)綁定模板中時(shí),可以使用Eval()方法將其的某個(gè)屬性與數(shù)據(jù)源中當(dāng)前數(shù)據(jù)對(duì)象的某個(gè)屬性相綁定。12<ItemTemplate>ClientID:<asp:LabelID="ClientIDLabel"runat="server"Text='<%#Eval("ClientID")%>'/></ItemTemplate>Eval方法提供了一個(gè)單向的只讀的數(shù)據(jù)值。這就是說(shuō),數(shù)據(jù)是從“數(shù)據(jù)源”對(duì)象單向傳送給模板中的控件,沒(méi)有辦法修改數(shù)據(jù)源對(duì)象中的數(shù)據(jù)。在數(shù)據(jù)綁定模板中綁定數(shù)據(jù)(1)當(dāng)一個(gè)ASP.NET控件位于一在數(shù)據(jù)綁定模板中綁定數(shù)據(jù)(2)當(dāng)需要修改數(shù)據(jù)源中的數(shù)據(jù)時(shí),通常采用Bind()方法實(shí)現(xiàn)這一功能:13<EditItemTemplate>ClientName:<asp:TextBoxID="ClientNameTextBox"runat="server"Text='<%#Bind("ClientName")%>'/></EditItemTemplate>當(dāng)使用Bind方法時(shí),用戶所作的修改會(huì)被傳送回?cái)?shù)據(jù)源控件以實(shí)現(xiàn)更新。在數(shù)據(jù)綁定模板中綁定數(shù)據(jù)(2)當(dāng)需要修改數(shù)據(jù)源中的數(shù)據(jù)時(shí),通數(shù)據(jù)綁定實(shí)例分析Demo:UseDataBind(UseEvalAndBind.aspx)14示例要點(diǎn):使用FormView控件綁定到SQLDataSource,定義其編輯和插入模板。數(shù)據(jù)綁定實(shí)例分析Demo:UseDataBind(UseE自動(dòng)綁定VS手工綁定ASP.NET提供的自動(dòng)數(shù)據(jù)綁定機(jī)制雖然很自動(dòng)化,幾乎不用編碼就可以完成許多功能,然而,在實(shí)際項(xiàng)目中為了實(shí)現(xiàn)嚴(yán)格的分層架構(gòu)和保證程序的靈活性與可控性,往往不使用自動(dòng)綁定,而是手工編程實(shí)現(xiàn)數(shù)據(jù)綁定。下面我們將以最復(fù)雜也是最常用的GridView為例,深入介紹數(shù)據(jù)綁定控件的使用方法。15自動(dòng)綁定VS手工綁定ASP.NET提供的自動(dòng)數(shù)據(jù)綁定機(jī)制2GRIDVIEW基礎(chǔ)知識(shí)以點(diǎn)帶面,舉一反三2GRIDVIEW基礎(chǔ)知識(shí)以點(diǎn)帶面,舉一反三形成GRIDVIEW的全局觀(1)GridView以表格的方式顯示數(shù)據(jù)。17GridViewRow對(duì)象代表GridView控件中的一行,GridView的Rows屬性代表當(dāng)前顯示在頁(yè)面上所有GridViewRow對(duì)象的集合TableCell代表一個(gè)單元格,這是一個(gè)控件容器,其中可以放置各種ASP.NET控件。
GridViewRow對(duì)象的Cells集合代表這一行的所有單元格形成GRIDVIEW的全局觀(1)GridView以表格的方形成GRIDVIEW的全局觀(2)與GridView綁定的數(shù)據(jù)都具有二維表的性質(zhì)。若綁定的是DataTable,則每個(gè)GridViewRow對(duì)象負(fù)責(zé)顯示一個(gè)DataRow,而每個(gè)TableCell則負(fù)責(zé)顯示此DataRow中特定字段的值。若綁定的是List<T>,則每個(gè)GridViewRow對(duì)象負(fù)責(zé)顯示一個(gè)T類型的對(duì)象,而每個(gè)TableCell則負(fù)責(zé)顯示此對(duì)象的特定屬性的值。18形成GRIDVIEW的全局觀(2)與GridView綁定的數(shù)數(shù)據(jù)綁定控件GRIDVIEW中的列(1)GridView中的列可以用不同方式顯示數(shù)據(jù)。Gridview列對(duì)象模型19數(shù)據(jù)綁定控件GRIDVIEW中的列(1)GridView中的數(shù)據(jù)綁定控件GRIDVIEW中的列(2)BoundedField:直接與數(shù)據(jù)對(duì)象的某個(gè)“列/屬性”綁定,以文本形式顯示其值。HyperLinkField:根據(jù)數(shù)據(jù)對(duì)象某個(gè)列(屬性)的值生成一個(gè)超鏈接元素(<a>)。ImageField:根據(jù)數(shù)據(jù)對(duì)象某個(gè)列(屬性)的值生成一個(gè)<img>元素,顯示一張圖片ButtonField:顯示一個(gè)按鈕CommandField:其實(shí)就是擁有特定CommandName的ButtonField,完成通用的“編輯”、“刪除”和“選擇”功能。TemplateField:模板列,用于自定義GridView的顯示界面,非常靈活與有用。20數(shù)據(jù)綁定控件GRIDVIEW中的列(2)BoundedFie圖示GRIDVIEW的列與行21CommandFieldBoundedFieldheaderfooter圖示GRIDVIEW的列與行21CommandFieldBoGRIDVIEW的重要事件GridView及GridViewRow會(huì)引發(fā)一系列的事件,應(yīng)用好這些事件非常關(guān)鍵,常用的有以下幾個(gè):RowCommand:點(diǎn)擊每行中的按鈕(ButtonField)時(shí)引發(fā),可通過(guò)CommandName區(qū)分開(kāi)是哪個(gè)按鈕被點(diǎn)擊。RowDataBound:給每行綁定數(shù)據(jù)時(shí)發(fā)生,通常用它來(lái)設(shè)置模板列中特定控件的屬性。RowDeleting:刪除一行時(shí)發(fā)生,可以取消刪除。RowUpdating:更新一行數(shù)據(jù)時(shí)發(fā)生,可以取消更新。SelectedIndexChanged
:選擇的行發(fā)生改變時(shí)發(fā)生。PageIndexChanging:點(diǎn)擊分頁(yè)按鈕時(shí)發(fā)生。22GRIDVIEW的重要事件GridView及GridView訪問(wèn)基礎(chǔ)數(shù)據(jù)使用GridViewRow對(duì)象的DataItem屬性,可以訪問(wèn)基礎(chǔ)數(shù)據(jù)對(duì)象的屬性GridView控件的DataKeyNames屬性用于指定主鍵,每一行GridViewRow會(huì)生成一個(gè)DataKey對(duì)象,整個(gè)Gridview控件會(huì)有一個(gè)DataKey對(duì)象的集合(用DataKeys屬性代表)??梢酝ㄟ^(guò)Gridview的SelectedDataKey方法獲取當(dāng)前選中行的DataKey對(duì)象,然后再檢索鍵值。23訪問(wèn)基礎(chǔ)數(shù)據(jù)使用GridViewRow對(duì)象的DataIte掌握GRIDVIEW編程技巧的關(guān)鍵牢記:GridView只負(fù)責(zé)數(shù)據(jù)的顯示,它不管數(shù)據(jù)的增刪改查!記住GridView對(duì)象模型:
行由哪個(gè)對(duì)象表達(dá),列有幾種類型了解GridView的常用事件,知道這些事件可由哪些對(duì)象引發(fā),高度注意每種事件參數(shù)中包含的信息。24掌握GRIDVIEW編程技巧的關(guān)鍵牢記:GridView只負(fù)3GRIDVIEW應(yīng)用實(shí)例3GRIDVIEW應(yīng)用實(shí)例本節(jié)示例網(wǎng)站GRIDVIEWDEMO說(shuō)明為了清晰地展示出GridView的使用技巧,實(shí)例使用手工數(shù)據(jù)綁定方式。綁定的數(shù)據(jù)來(lái)自于Clients表,對(duì)應(yīng)的類為ClientInfo,GridView綁定到List<ClientInfo>集合對(duì)象。ClientInfoAccessObj對(duì)象包含一系列的方法,使用ADO.NET技術(shù)從數(shù)據(jù)庫(kù)中提取與更新數(shù)據(jù)。上述兩個(gè)類均放置于示例網(wǎng)站的App_Code文件夾下。這種網(wǎng)站架構(gòu)也用于本系列的大實(shí)例HappyBookShop中。26本節(jié)示例網(wǎng)站GRIDVIEWDEMO說(shuō)明為了清晰地展示出Gr實(shí)例1:自定義顯示列和列標(biāo)題可以讓GridView只顯示特定的列,并且指定列的標(biāo)題。Demo:CustomizeColumns.aspx27實(shí)例1:自定義顯示列和列標(biāo)題可以讓GridView只顯示特定實(shí)例1要點(diǎn):28實(shí)例1要點(diǎn):28從這個(gè)例子中我們可以知道GridView會(huì)根據(jù)綁定的數(shù)據(jù)源自動(dòng)創(chuàng)建列,這是通過(guò)反射實(shí)現(xiàn)的。每個(gè)列都是一種特定類型的DataControlField,可以通過(guò)設(shè)置它的一些屬性來(lái)定制它的外觀和行為。對(duì)于BoundedField,設(shè)定它的DataField,可以顯示它所綁定的數(shù)據(jù)對(duì)象特定屬性的值。29從這個(gè)例子中我們可以知道GridView會(huì)根據(jù)綁定的數(shù)據(jù)源自實(shí)例2:自定義分頁(yè)當(dāng)綁定到SqlDataSource時(shí),GridView的分頁(yè)功能是自動(dòng)實(shí)現(xiàn)的,不需要編寫(xiě)一行代碼。然而,當(dāng)綁定到功能較少的數(shù)據(jù)源,比如List<T>時(shí),就必須自己定義分頁(yè)代碼了,另外,分頁(yè)的格式往往也希望能自定義。Demo:GridViewPaging.aspx30每頁(yè)顯示5條記錄自定義分頁(yè)按鈕格式實(shí)例2:自定義分頁(yè)當(dāng)綁定到SqlDataSource時(shí),Gr實(shí)例2要點(diǎn):設(shè)置GridView的AllowPaging="True";PageSize="5";在GridView的PageIndexChanging事件中設(shè)置其PageIndex為新頁(yè),然后重新綁定數(shù)據(jù)實(shí)現(xiàn)分頁(yè)。設(shè)置GridView的PagerSettings和PagerStyle屬性自定義分頁(yè)按鈕。
31實(shí)例2要點(diǎn):設(shè)置GridView的AllowPaging="從這個(gè)例子中我們知道分頁(yè)時(shí)GridView會(huì)激發(fā)PageIndexChanging事件,對(duì)應(yīng)地,分頁(yè)完成時(shí)會(huì)激發(fā)PageIndexChanged事件。在GridView中有不少事件是這樣配對(duì)的。一般來(lái)說(shuō),在“-ing”事件中,其參數(shù)e包含了重要的信息,比如分頁(yè)事件中的e.NewPageIndex屬性代表了新頁(yè)碼。而設(shè)置e.Cancel=true則可以取消這一操作。當(dāng)需要修改GridView顯示的數(shù)據(jù)時(shí)(比如跳轉(zhuǎn)到新的一頁(yè)),需要重新綁定數(shù)據(jù)。32從這個(gè)例子中我們知道分頁(yè)時(shí)GridView會(huì)激發(fā)PageInGRIDVIEW自定義分頁(yè)GridView具備自動(dòng)分頁(yè)的特性。這就是說(shuō),只要將綁定到一個(gè)數(shù)據(jù)源,并設(shè)置其每頁(yè)顯示的行數(shù)和要顯示的頁(yè)碼,GridView會(huì)自動(dòng)從數(shù)據(jù)源中提取數(shù)據(jù)(從開(kāi)頭第一頁(yè)到要顯示的頁(yè),然后丟棄前面的N-1頁(yè),只顯示第N頁(yè))。對(duì)于List<T>,由于其實(shí)現(xiàn)了IList接口,因此也具備自動(dòng)分頁(yè)的特性??梢酝ㄟ^(guò)每次只提取所需要的數(shù)據(jù)來(lái)提升性能,這時(shí)需要人工編寫(xiě)代碼來(lái)完成數(shù)據(jù)的提取工作,然后再將數(shù)據(jù)綁定到GridView。這種方法稱為“自定義分頁(yè)”。為達(dá)到最佳性能,往往還禁用GridView的視圖狀態(tài)(EnableViewState=false),完全用其他標(biāo)準(zhǔn)的ASP.NET控件來(lái)實(shí)現(xiàn)分頁(yè)功能。33GRIDVIEW自定義分頁(yè)GridView具備自動(dòng)分頁(yè)的特性實(shí)例2延伸:GRIDVIEW自定義分頁(yè)Demo:GridViewCustomizePaging.aspx34(1)查看一下源文件,禁用ViewState可以減少多少數(shù)據(jù)量的傳輸?。?)GridView內(nèi)置對(duì)于分頁(yè)界面的定制,只需添加一個(gè)數(shù)據(jù)分頁(yè)模板PagerTemplate
就可以實(shí)現(xiàn)同這個(gè)示例一樣的功能。請(qǐng)通過(guò)查詢MSDN實(shí)現(xiàn)示例的這種導(dǎo)航方式。實(shí)例2延伸:GRIDVIEW自定義分頁(yè)Demo:GridV實(shí)例3:排序GridViewSort.aspx35即可以點(diǎn)擊按鈕,也可以點(diǎn)擊列標(biāo)題進(jìn)行排序支持多列排序?qū)嵗?:排序GridViewSort.aspx35即可以點(diǎn)擊實(shí)例3要點(diǎn):響應(yīng)Sorting事件,在此事件中編碼進(jìn)行數(shù)據(jù)綁定利用委托實(shí)現(xiàn)對(duì)泛型數(shù)組中的對(duì)象進(jìn)行排序。GridView的一個(gè)基本編程方法:喂給GridView什么樣的數(shù)據(jù),它就忠實(shí)地呈現(xiàn)什么樣的數(shù)據(jù)。自我拓展訓(xùn)練:本示例是升序排列,如何讓其也支持降序排列?36實(shí)例3要點(diǎn):響應(yīng)Sorting事件,在此事件中編碼進(jìn)行數(shù)據(jù)綁實(shí)例4:記錄的刪除GridViewDelete.aspx37實(shí)例4:記錄的刪除GridViewDelete.aspx37實(shí)例4要點(diǎn)ButtonField可以綁定到數(shù)據(jù)源以顯示不同的文字,點(diǎn)擊它GridView會(huì)引發(fā)RowCommand事件。此事件參數(shù)e有以下重要屬性:e.CommandName屬性表明哪個(gè)按鈕被點(diǎn)擊。e.CommandArgument屬性表明是哪一行,這個(gè)值是由GridView自動(dòng)填充的。e.CommandSource則代表了GridView自身。38實(shí)例4要點(diǎn)ButtonField可以綁定到數(shù)據(jù)源以顯示不同的GRIDVIEW預(yù)定義的COMMANDNAME當(dāng)一個(gè)ButtonField的CommandName是以下預(yù)定義值時(shí),相應(yīng)的事件被激發(fā):Cancel:引發(fā)“取消”事件。Delete:引發(fā)“刪除”事件Edit:引發(fā)“編輯”事件Page:引發(fā)“分頁(yè)”事件Select:引發(fā)“選擇”事件Sort:引發(fā)“排序”事件Update:引發(fā)“更新”事件CommandField是特殊的ButtonField,其CommandName是上述預(yù)定義值之一。39GRIDVIEW預(yù)定義的COMMANDNAME當(dāng)一個(gè)Butt數(shù)據(jù)主鍵值的獲取當(dāng)需要從數(shù)據(jù)庫(kù)刪除記錄時(shí),需要知道要?jiǎng)h除記錄的主鍵。GridView有一個(gè)DataKeyNames屬性,進(jìn)行綁定前必須將其設(shè)置為主鍵值名。當(dāng)需要獲取主鍵時(shí),根據(jù)指定行的索引,從GridView的“DataKeys[索引].Value”得到主鍵值。提醒:這是編程中的一個(gè)關(guān)鍵點(diǎn)!40數(shù)據(jù)主鍵值的獲取當(dāng)需要從數(shù)據(jù)庫(kù)刪除記錄時(shí),需要知道要?jiǎng)h除記錄實(shí)例5:查找GridViewFind.aspx41實(shí)例5:查找GridViewFind.aspx41實(shí)例5分析本實(shí)例再次采用了以下這種典型的編程方法:從數(shù)據(jù)庫(kù)中取出需要的數(shù)據(jù)“喂”給GridView。對(duì)于分頁(yè):則利用了GridView的自動(dòng)分頁(yè)功能。通過(guò)設(shè)置其PageIndex實(shí)現(xiàn)分頁(yè)。42實(shí)例5分析本實(shí)例再次采用了以下這種典型的編程方法:42實(shí)例6:選中并編輯記錄Demo:GridViewEdit.aspx43實(shí)例6:選中并編輯記錄Demo:GridViewEdit.a實(shí)例6的要點(diǎn)使用GridView的“選擇”功能,在GridView的SelectedIndexChanging事件中顯示一個(gè)編輯面板供用戶修改記錄。此面板完全是自定義的。SelectIndexChanging/SelectIndexChanged事件在主從表顯示中很有用。注意示例程序是如何取出選中記錄的當(dāng)前值的。txtName.Text=GridView1.Rows[e.NewSelectedIndex].Cells[1].Text;拓展訓(xùn)練:
還可以利用GridView內(nèi)部集成的編輯功能讓其進(jìn)入編輯狀態(tài),在RowEditing中完成顯示編輯面板的任務(wù)。激發(fā)RowEditing事件的方法在示例網(wǎng)頁(yè)中有說(shuō)明,請(qǐng)同學(xué)們課后完成這一作業(yè)。44實(shí)例6的要點(diǎn)使用GridView的“選擇”功能,在GridVGRIDVIEW的模板列簡(jiǎn)介在GridView的模板列中,可以添加各種Web控件,并通過(guò)編寫(xiě)代碼實(shí)現(xiàn)特定的數(shù)據(jù)處理工作,然后再將結(jié)果顯示在相應(yīng)的控件中。45GRIDVIEW的模板列簡(jiǎn)介在GridView的模板列中,可實(shí)例7:模板列的應(yīng)用——批處理刪除一次選取多條記錄進(jìn)行統(tǒng)一處理。Demo:BatchDelete.aspx46實(shí)例7:模板列的應(yīng)用——批處理刪除一次選取多條記錄進(jìn)行統(tǒng)一處實(shí)例7要點(diǎn)匯總在模板中可以放置任意一種ASP.NET控件,從而使其成為最靈活的一種數(shù)據(jù)綁定方式,為廣大開(kāi)發(fā)者所喜用。當(dāng)需要訪問(wèn)特定行中的模板列中的某個(gè)特定控件時(shí),請(qǐng)使用GridViewRow對(duì)象的FindControl(“控件ID”)方法,這是一個(gè)非常重要的編程方法。GridView的Rows集合存放的是當(dāng)前顯示在頁(yè)面上的行對(duì)象的集合。注意要使用視圖狀態(tài)保存當(dāng)前頁(yè)碼,以便用戶在刪除記錄后仍能回到上次工作的地方。GridView的DataKeyNames不要忘了設(shè)置,否則取不出主鍵。47實(shí)例7要點(diǎn)匯總在模板中可以放置任意一種ASP.NET控件,從4數(shù)據(jù)綁定控件的組合使用示例網(wǎng)站:DataControlsDemo4數(shù)據(jù)綁定控件的組合使用示例網(wǎng)站:DataControls實(shí)例1:嵌套控件在GridView模板列中嵌入其他的數(shù)據(jù)綁定控件:出版社和書(shū)名Demo:EmbodiedDataBindControl.aspx49實(shí)例1:嵌套控件在GridView模板列中嵌入其他的數(shù)據(jù)綁實(shí)例1分析DataAccessObj類負(fù)責(zé)向網(wǎng)頁(yè)提供數(shù)據(jù)源。在GridView中創(chuàng)建一個(gè)模板列,其中嵌套一個(gè)BulletedList控件。GridView綁定到DataTable,在GridView的RowDataBound事件中綁定嵌套的數(shù)據(jù)控件。提示:
高度注意RowDataBound事件中代碼的寫(xiě)法:(1)如何提取出當(dāng)前行所對(duì)應(yīng)的數(shù)據(jù)對(duì)象?(2)如何查找模板列中的特定控件?(3)為何要判定行的類型?50實(shí)例1分析DataAccessObj類負(fù)責(zé)向網(wǎng)頁(yè)提供數(shù)據(jù)源。實(shí)例2:數(shù)據(jù)篩選與合計(jì)DropDownList與GridView配合實(shí)現(xiàn)數(shù)據(jù)篩選。Demo:DropDownListAndGridView.aspx51實(shí)例2:數(shù)據(jù)篩選與合計(jì)DropDownList與GridVi實(shí)例2要點(diǎn)分析DropDownList可以綁定到List<T>,注意它的DataTextField和 DataValueField兩個(gè)屬性。在GridView的RowDataBound中完成合計(jì)工作,并將結(jié)果動(dòng)態(tài)地添加到頁(yè)面上。注意其實(shí)現(xiàn)方法。52實(shí)例2要點(diǎn)分析DropDownList可以綁定到List<T實(shí)例3:主從表MasterDetail.aspx53主表顯示書(shū),從表顯示讀者評(píng)論實(shí)例3:主從表MasterDetail.aspx53主表顯示實(shí)例3分析主表顯示一個(gè)“選擇”按鈕,這是使用GridView內(nèi)置的選擇功能實(shí)現(xiàn)的。在主表的SelectedIndexChanging事件中取出選中行的主鍵,根據(jù)主鍵到數(shù)據(jù)庫(kù)中提取記錄,再綁定到從表。54實(shí)例3分析主表顯示一個(gè)“選擇”按鈕,這是使用GridVie數(shù)據(jù)綁定技術(shù)原理ASP.NET數(shù)據(jù)綁定技術(shù)之?dāng)?shù)據(jù)綁定技術(shù)原理ASP.NET數(shù)據(jù)綁定技術(shù)之主要內(nèi)容數(shù)據(jù)綁定原理GridView基礎(chǔ)知識(shí)GridView應(yīng)用實(shí)例數(shù)據(jù)綁定控件的組合使用56主要內(nèi)容數(shù)據(jù)綁定原理21數(shù)據(jù)綁定原理只有知其所以然才能知其然1數(shù)據(jù)綁定原理只有知其所以然才能知其然引例:直觀了解數(shù)據(jù)綁定現(xiàn)場(chǎng)編程展示(參考示例:UseDataBind)58引例:直觀了解數(shù)據(jù)綁定現(xiàn)場(chǎng)編程展示(參考示例:UseData數(shù)據(jù)綁定的層次結(jié)構(gòu)數(shù)據(jù)庫(kù)ADO.NET數(shù)據(jù)綁定控件數(shù)據(jù)源控件59提供顯示和編輯數(shù)據(jù)的可視化界面IDataSourceDataSourceView提供對(duì)數(shù)據(jù)的訪問(wèn)接口:增、刪、改、查與數(shù)據(jù)庫(kù)交互,完成信息的增、刪、改、查工作。信息的存放地調(diào)用存取數(shù)據(jù)綁定的層次結(jié)構(gòu)數(shù)據(jù)庫(kù)ADO.NET數(shù)據(jù)綁定控件數(shù)據(jù)源控件常用的數(shù)據(jù)綁定控件控件名稱說(shuō)明GridView以表格的方式顯示和編輯數(shù)據(jù),DetailsView一次顯示、編輯、插入或刪除一條記錄。默認(rèn)情況下,DetailsView控件將記錄的每個(gè)字段顯示在它自己的一行內(nèi)。FormViewFormView控件與DetailsView控件相似,一次也只能顯示或編輯一條記錄。FormView需要給其設(shè)定一個(gè)模板。DataList控件可以用某種用戶指定的格式來(lái)顯示數(shù)據(jù)(比如分列顯示),這種格式由模板和樣式進(jìn)行定義。RepeaterRepeater控件沒(méi)有包含內(nèi)置的布局或樣式,需要由Web開(kāi)發(fā)者指定所有的用于顯示數(shù)據(jù)的內(nèi)部控件和顯示樣式ListViewASP.NET3.5新增,以嵌套容器模板和占位符的方式提供靈活的數(shù)據(jù)顯示模式60常用的數(shù)據(jù)綁定控件控件名稱說(shuō)明GridView以表格的方式顯常用的數(shù)據(jù)源控件SqlDataSource可以連接到
ADO.NET支持的任何
SQL數(shù)據(jù)庫(kù)。AccessDataSource連接到使用
MicrosoftOffice創(chuàng)建的
Access數(shù)據(jù)庫(kù)。ObjectDataSource連接到應(yīng)用程序的
Bin或
App_Code目錄中的中間層業(yè)務(wù)對(duì)象或數(shù)據(jù)集。XmlDataSource連接到
XML文件。SitemapDataSource連接到此應(yīng)用程序的站點(diǎn)導(dǎo)航樹(shù)(要求應(yīng)用程序根目錄處有一個(gè)有效的站點(diǎn)地圖文件,默認(rèn)的文件名為“Web.sitemap”),站點(diǎn)地圖文件其實(shí)也是一個(gè)XML文件。LINQDataSource.NET3.0新增,可以訪問(wèn)各種類型的數(shù)據(jù),包括數(shù)據(jù)庫(kù)和XML文件。與C#/VB.NET等.NET語(yǔ)言直接集成。61常用的數(shù)據(jù)源控件SqlDataSource可以連接到ADO多種可綁定的數(shù)據(jù)對(duì)象除了綁定到數(shù)據(jù)源這種具有很強(qiáng)功能的對(duì)象之外,數(shù)據(jù)綁定控件還可以綁定到最小實(shí)現(xiàn)了IEnumerable接口的集合對(duì)象(比如數(shù)組/HashTable/List<T>)。另外,通過(guò)使用數(shù)據(jù)綁定表達(dá)式,可以將一些數(shù)據(jù)綁定控件直接與某個(gè)函數(shù)或?qū)傩赃M(jìn)行綁定。62多種可綁定的數(shù)據(jù)對(duì)象除了綁定到數(shù)據(jù)源這種具有很強(qiáng)功能的對(duì)象之?dāng)?shù)據(jù)綁定的三種實(shí)現(xiàn)方式:將數(shù)據(jù)綁定控件的DataSourceID設(shè)定為數(shù)據(jù)源控件,數(shù)據(jù)綁定控件即可充分利用數(shù)據(jù)源控件的功能實(shí)現(xiàn)對(duì)數(shù)據(jù)的“增刪改查”。這稱為“自動(dòng)數(shù)據(jù)綁定”。也可以不使用DataSourceID,而是直接將數(shù)據(jù)源賦值給數(shù)據(jù)綁定控件的DataSource屬性,然后再調(diào)用數(shù)據(jù)綁定控件的DataBind()方法實(shí)現(xiàn)“手工數(shù)據(jù)綁定”?;蛘咧苯釉陧?yè)面中放置綁定表達(dá)式,然后在Page_Load中調(diào)用頁(yè)面類的DataBind()方法實(shí)現(xiàn)數(shù)據(jù)綁定。63數(shù)據(jù)綁定的三種實(shí)現(xiàn)方式:將數(shù)據(jù)綁定控件的DataSource數(shù)據(jù)綁定表達(dá)式第一步:設(shè)定數(shù)據(jù)表達(dá)式
<%#數(shù)據(jù)綁定表達(dá)式%>第二步:執(zhí)行Page類中的Bind()方法。Demo:UseDataBind(DataBindingExpression.aspx)64重要編程提示:直接在頁(yè)面中嵌入C#代碼的方法:<%=C#代碼%>無(wú)需調(diào)用Page.Bind()方法,上述代碼總是執(zhí)行。數(shù)據(jù)綁定表達(dá)式第一步:設(shè)定數(shù)據(jù)表達(dá)式10重要編程提示:理解“數(shù)據(jù)綁定模板”由于要顯示的數(shù)據(jù)通常包含多條結(jié)構(gòu)類似的記錄,因此,經(jīng)常使用“模板(Template)”來(lái)指定單條記錄的顯示格式,然后,數(shù)據(jù)綁定控件自動(dòng)將這一定義好的模板應(yīng)用于所有要顯示的記錄??梢葬槍?duì)不同的場(chǎng)景定義不同的模板,比如為瀏覽狀態(tài)顯示一個(gè)只讀的模板(通常用Label來(lái)表達(dá)信息),然后為編輯狀態(tài)顯示另一個(gè)模板(通常用TextBox來(lái)向用戶提供修改信息的手段)。大多數(shù)數(shù)據(jù)綁定控件都提供了相應(yīng)的方法在不同的狀態(tài)間切換(比如從瀏覽切換到編輯狀態(tài)),并會(huì)自動(dòng)加載相應(yīng)的模板,與此同時(shí),還會(huì)激發(fā)相應(yīng)的事件。65理解“數(shù)據(jù)綁定模板”由于要顯示的數(shù)據(jù)通常包含多條結(jié)構(gòu)類似的記在數(shù)據(jù)綁定模板中綁定數(shù)據(jù)(1)當(dāng)一個(gè)ASP.NET控件位于一個(gè)數(shù)據(jù)綁定模板中時(shí),可以使用Eval()方法將其的某個(gè)屬性與數(shù)據(jù)源中當(dāng)前數(shù)據(jù)對(duì)象的某個(gè)屬性相綁定。66<ItemTemplate>ClientID:<asp:LabelID="ClientIDLabel"runat="server"Text='<%#Eval("ClientID")%>'/></ItemTemplate>Eval方法提供了一個(gè)單向的只讀的數(shù)據(jù)值。這就是說(shuō),數(shù)據(jù)是從“數(shù)據(jù)源”對(duì)象單向傳送給模板中的控件,沒(méi)有辦法修改數(shù)據(jù)源對(duì)象中的數(shù)據(jù)。在數(shù)據(jù)綁定模板中綁定數(shù)據(jù)(1)當(dāng)一個(gè)ASP.NET控件位于一在數(shù)據(jù)綁定模板中綁定數(shù)據(jù)(2)當(dāng)需要修改數(shù)據(jù)源中的數(shù)據(jù)時(shí),通常采用Bind()方法實(shí)現(xiàn)這一功能:67<EditItemTemplate>ClientName:<asp:TextBoxID="ClientNameTextBox"runat="server"Text='<%#Bind("ClientName")%>'/></EditItemTemplate>當(dāng)使用Bind方法時(shí),用戶所作的修改會(huì)被傳送回?cái)?shù)據(jù)源控件以實(shí)現(xiàn)更新。在數(shù)據(jù)綁定模板中綁定數(shù)據(jù)(2)當(dāng)需要修改數(shù)據(jù)源中的數(shù)據(jù)時(shí),通數(shù)據(jù)綁定實(shí)例分析Demo:UseDataBind(UseEvalAndBind.aspx)68示例要點(diǎn):使用FormView控件綁定到SQLDataSource,定義其編輯和插入模板。數(shù)據(jù)綁定實(shí)例分析Demo:UseDataBind(UseE自動(dòng)綁定VS手工綁定ASP.NET提供的自動(dòng)數(shù)據(jù)綁定機(jī)制雖然很自動(dòng)化,幾乎不用編碼就可以完成許多功能,然而,在實(shí)際項(xiàng)目中為了實(shí)現(xiàn)嚴(yán)格的分層架構(gòu)和保證程序的靈活性與可控性,往往不使用自動(dòng)綁定,而是手工編程實(shí)現(xiàn)數(shù)據(jù)綁定。下面我們將以最復(fù)雜也是最常用的GridView為例,深入介紹數(shù)據(jù)綁定控件的使用方法。69自動(dòng)綁定VS手工綁定ASP.NET提供的自動(dòng)數(shù)據(jù)綁定機(jī)制2GRIDVIEW基礎(chǔ)知識(shí)以點(diǎn)帶面,舉一反三2GRIDVIEW基礎(chǔ)知識(shí)以點(diǎn)帶面,舉一反三形成GRIDVIEW的全局觀(1)GridView以表格的方式顯示數(shù)據(jù)。71GridViewRow對(duì)象代表GridView控件中的一行,GridView的Rows屬性代表當(dāng)前顯示在頁(yè)面上所有GridViewRow對(duì)象的集合TableCell代表一個(gè)單元格,這是一個(gè)控件容器,其中可以放置各種ASP.NET控件。
GridViewRow對(duì)象的Cells集合代表這一行的所有單元格形成GRIDVIEW的全局觀(1)GridView以表格的方形成GRIDVIEW的全局觀(2)與GridView綁定的數(shù)據(jù)都具有二維表的性質(zhì)。若綁定的是DataTable,則每個(gè)GridViewRow對(duì)象負(fù)責(zé)顯示一個(gè)DataRow,而每個(gè)TableCell則負(fù)責(zé)顯示此DataRow中特定字段的值。若綁定的是List<T>,則每個(gè)GridViewRow對(duì)象負(fù)責(zé)顯示一個(gè)T類型的對(duì)象,而每個(gè)TableCell則負(fù)責(zé)顯示此對(duì)象的特定屬性的值。72形成GRIDVIEW的全局觀(2)與GridView綁定的數(shù)數(shù)據(jù)綁定控件GRIDVIEW中的列(1)GridView中的列可以用不同方式顯示數(shù)據(jù)。Gridview列對(duì)象模型73數(shù)據(jù)綁定控件GRIDVIEW中的列(1)GridView中的數(shù)據(jù)綁定控件GRIDVIEW中的列(2)BoundedField:直接與數(shù)據(jù)對(duì)象的某個(gè)“列/屬性”綁定,以文本形式顯示其值。HyperLinkField:根據(jù)數(shù)據(jù)對(duì)象某個(gè)列(屬性)的值生成一個(gè)超鏈接元素(<a>)。ImageField:根據(jù)數(shù)據(jù)對(duì)象某個(gè)列(屬性)的值生成一個(gè)<img>元素,顯示一張圖片ButtonField:顯示一個(gè)按鈕CommandField:其實(shí)就是擁有特定CommandName的ButtonField,完成通用的“編輯”、“刪除”和“選擇”功能。TemplateField:模板列,用于自定義GridView的顯示界面,非常靈活與有用。74數(shù)據(jù)綁定控件GRIDVIEW中的列(2)BoundedFie圖示GRIDVIEW的列與行75CommandFieldBoundedFieldheaderfooter圖示GRIDVIEW的列與行21CommandFieldBoGRIDVIEW的重要事件GridView及GridViewRow會(huì)引發(fā)一系列的事件,應(yīng)用好這些事件非常關(guān)鍵,常用的有以下幾個(gè):RowCommand:點(diǎn)擊每行中的按鈕(ButtonField)時(shí)引發(fā),可通過(guò)CommandName區(qū)分開(kāi)是哪個(gè)按鈕被點(diǎn)擊。RowDataBound:給每行綁定數(shù)據(jù)時(shí)發(fā)生,通常用它來(lái)設(shè)置模板列中特定控件的屬性。RowDeleting:刪除一行時(shí)發(fā)生,可以取消刪除。RowUpdating:更新一行數(shù)據(jù)時(shí)發(fā)生,可以取消更新。SelectedIndexChanged
:選擇的行發(fā)生改變時(shí)發(fā)生。PageIndexChanging:點(diǎn)擊分頁(yè)按鈕時(shí)發(fā)生。76GRIDVIEW的重要事件GridView及GridView訪問(wèn)基礎(chǔ)數(shù)據(jù)使用GridViewRow對(duì)象的DataItem屬性,可以訪問(wèn)基礎(chǔ)數(shù)據(jù)對(duì)象的屬性GridView控件的DataKeyNames屬性用于指定主鍵,每一行GridViewRow會(huì)生成一個(gè)DataKey對(duì)象,整個(gè)Gridview控件會(huì)有一個(gè)DataKey對(duì)象的集合(用DataKeys屬性代表)??梢酝ㄟ^(guò)Gridview的SelectedDataKey方法獲取當(dāng)前選中行的DataKey對(duì)象,然后再檢索鍵值。77訪問(wèn)基礎(chǔ)數(shù)據(jù)使用GridViewRow對(duì)象的DataIte掌握GRIDVIEW編程技巧的關(guān)鍵牢記:GridView只負(fù)責(zé)數(shù)據(jù)的顯示,它不管數(shù)據(jù)的增刪改查!記住GridView對(duì)象模型:
行由哪個(gè)對(duì)象表達(dá),列有幾種類型了解GridView的常用事件,知道這些事件可由哪些對(duì)象引發(fā),高度注意每種事件參數(shù)中包含的信息。78掌握GRIDVIEW編程技巧的關(guān)鍵牢記:GridView只負(fù)3GRIDVIEW應(yīng)用實(shí)例3GRIDVIEW應(yīng)用實(shí)例本節(jié)示例網(wǎng)站GRIDVIEWDEMO說(shuō)明為了清晰地展示出GridView的使用技巧,實(shí)例使用手工數(shù)據(jù)綁定方式。綁定的數(shù)據(jù)來(lái)自于Clients表,對(duì)應(yīng)的類為ClientInfo,GridView綁定到List<ClientInfo>集合對(duì)象。ClientInfoAccessObj對(duì)象包含一系列的方法,使用ADO.NET技術(shù)從數(shù)據(jù)庫(kù)中提取與更新數(shù)據(jù)。上述兩個(gè)類均放置于示例網(wǎng)站的App_Code文件夾下。這種網(wǎng)站架構(gòu)也用于本系列的大實(shí)例HappyBookShop中。80本節(jié)示例網(wǎng)站GRIDVIEWDEMO說(shuō)明為了清晰地展示出Gr實(shí)例1:自定義顯示列和列標(biāo)題可以讓GridView只顯示特定的列,并且指定列的標(biāo)題。Demo:CustomizeColumns.aspx81實(shí)例1:自定義顯示列和列標(biāo)題可以讓GridView只顯示特定實(shí)例1要點(diǎn):82實(shí)例1要點(diǎn):28從這個(gè)例子中我們可以知道GridView會(huì)根據(jù)綁定的數(shù)據(jù)源自動(dòng)創(chuàng)建列,這是通過(guò)反射實(shí)現(xiàn)的。每個(gè)列都是一種特定類型的DataControlField,可以通過(guò)設(shè)置它的一些屬性來(lái)定制它的外觀和行為。對(duì)于BoundedField,設(shè)定它的DataField,可以顯示它所綁定的數(shù)據(jù)對(duì)象特定屬性的值。83從這個(gè)例子中我們可以知道GridView會(huì)根據(jù)綁定的數(shù)據(jù)源自實(shí)例2:自定義分頁(yè)當(dāng)綁定到SqlDataSource時(shí),GridView的分頁(yè)功能是自動(dòng)實(shí)現(xiàn)的,不需要編寫(xiě)一行代碼。然而,當(dāng)綁定到功能較少的數(shù)據(jù)源,比如List<T>時(shí),就必須自己定義分頁(yè)代碼了,另外,分頁(yè)的格式往往也希望能自定義。Demo:GridViewPaging.aspx84每頁(yè)顯示5條記錄自定義分頁(yè)按鈕格式實(shí)例2:自定義分頁(yè)當(dāng)綁定到SqlDataSource時(shí),Gr實(shí)例2要點(diǎn):設(shè)置GridView的AllowPaging="True";PageSize="5";在GridView的PageIndexChanging事件中設(shè)置其PageIndex為新頁(yè),然后重新綁定數(shù)據(jù)實(shí)現(xiàn)分頁(yè)。設(shè)置GridView的PagerSettings和PagerStyle屬性自定義分頁(yè)按鈕。
85實(shí)例2要點(diǎn):設(shè)置GridView的AllowPaging="從這個(gè)例子中我們知道分頁(yè)時(shí)GridView會(huì)激發(fā)PageIndexChanging事件,對(duì)應(yīng)地,分頁(yè)完成時(shí)會(huì)激發(fā)PageIndexChanged事件。在GridView中有不少事件是這樣配對(duì)的。一般來(lái)說(shuō),在“-ing”事件中,其參數(shù)e包含了重要的信息,比如分頁(yè)事件中的e.NewPageIndex屬性代表了新頁(yè)碼。而設(shè)置e.Cancel=true則可以取消這一操作。當(dāng)需要修改GridView顯示的數(shù)據(jù)時(shí)(比如跳轉(zhuǎn)到新的一頁(yè)),需要重新綁定數(shù)據(jù)。86從這個(gè)例子中我們知道分頁(yè)時(shí)GridView會(huì)激發(fā)PageInGRIDVIEW自定義分頁(yè)GridView具備自動(dòng)分頁(yè)的特性。這就是說(shuō),只要將綁定到一個(gè)數(shù)據(jù)源,并設(shè)置其每頁(yè)顯示的行數(shù)和要顯示的頁(yè)碼,GridView會(huì)自動(dòng)從數(shù)據(jù)源中提取數(shù)據(jù)(從開(kāi)頭第一頁(yè)到要顯示的頁(yè),然后丟棄前面的N-1頁(yè),只顯示第N頁(yè))。對(duì)于List<T>,由于其實(shí)現(xiàn)了IList接口,因此也具備自動(dòng)分頁(yè)的特性??梢酝ㄟ^(guò)每次只提取所需要的數(shù)據(jù)來(lái)提升性能,這時(shí)需要人工編寫(xiě)代碼來(lái)完成數(shù)據(jù)的提取工作,然后再將數(shù)據(jù)綁定到GridView。這種方法稱為“自定義分頁(yè)”。為達(dá)到最佳性能,往往還禁用GridView的視圖狀態(tài)(EnableViewState=false),完全用其他標(biāo)準(zhǔn)的ASP.NET控件來(lái)實(shí)現(xiàn)分頁(yè)功能。87GRIDVIEW自定義分頁(yè)GridView具備自動(dòng)分頁(yè)的特性實(shí)例2延伸:GRIDVIEW自定義分頁(yè)Demo:GridViewCustomizePaging.aspx88(1)查看一下源文件,禁用ViewState可以減少多少數(shù)據(jù)量的傳輸!(2)GridView內(nèi)置對(duì)于分頁(yè)界面的定制,只需添加一個(gè)數(shù)據(jù)分頁(yè)模板PagerTemplate
就可以實(shí)現(xiàn)同這個(gè)示例一樣的功能。請(qǐng)通過(guò)查詢MSDN實(shí)現(xiàn)示例的這種導(dǎo)航方式。實(shí)例2延伸:GRIDVIEW自定義分頁(yè)Demo:GridV實(shí)例3:排序GridViewSort.aspx89即可以點(diǎn)擊按鈕,也可以點(diǎn)擊列標(biāo)題進(jìn)行排序支持多列排序?qū)嵗?:排序GridViewSort.aspx35即可以點(diǎn)擊實(shí)例3要點(diǎn):響應(yīng)Sorting事件,在此事件中編碼進(jìn)行數(shù)據(jù)綁定利用委托實(shí)現(xiàn)對(duì)泛型數(shù)組中的對(duì)象進(jìn)行排序。GridView的一個(gè)基本編程方法:喂給GridView什么樣的數(shù)據(jù),它就忠實(shí)地呈現(xiàn)什么樣的數(shù)據(jù)。自我拓展訓(xùn)練:本示例是升序排列,如何讓其也支持降序排列?90實(shí)例3要點(diǎn):響應(yīng)Sorting事件,在此事件中編碼進(jìn)行數(shù)據(jù)綁實(shí)例4:記錄的刪除GridViewDelete.aspx91實(shí)例4:記錄的刪除GridViewDelete.aspx37實(shí)例4要點(diǎn)ButtonField可以綁定到數(shù)據(jù)源以顯示不同的文字,點(diǎn)擊它GridView會(huì)引發(fā)RowCommand事件。此事件參數(shù)e有以下重要屬性:e.CommandName屬性表明哪個(gè)按鈕被點(diǎn)擊。e.CommandArgument屬性表明是哪一行,這個(gè)值是由GridView自動(dòng)填充的。e.CommandSource則代表了GridView自身。92實(shí)例4要點(diǎn)ButtonField可以綁定到數(shù)據(jù)源以顯示不同的GRIDVIEW預(yù)定義的COMMANDNAME當(dāng)一個(gè)ButtonField的CommandName是以下預(yù)定義值時(shí),相應(yīng)的事件被激發(fā):Cancel:引發(fā)“取消”事件。Delete:引發(fā)“刪除”事件Edit:引發(fā)“編輯”事件Page:引發(fā)“分頁(yè)”事件Select:引發(fā)“選擇”事件Sort:引發(fā)“排序”事件Update:引發(fā)“更新”事件CommandField是特殊的ButtonField,其CommandName是上述預(yù)定義值之一。93GRIDVIEW預(yù)定義的COMMANDNAME當(dāng)一個(gè)Butt數(shù)據(jù)主鍵值的獲取當(dāng)需要從數(shù)據(jù)庫(kù)刪除記錄時(shí),需要知道要?jiǎng)h除記錄的主鍵。GridView有一個(gè)DataKeyNames屬性,進(jìn)行綁定前必須將其設(shè)置為主鍵值名。當(dāng)需要獲取主鍵時(shí),根據(jù)指定行的索引,從GridView的“DataKeys[索引].Value”得到主鍵值。提醒:這是編程中的一個(gè)關(guān)鍵點(diǎn)!94數(shù)據(jù)主鍵值的獲取當(dāng)需要從數(shù)據(jù)庫(kù)刪除記錄時(shí),需要知道要?jiǎng)h除記錄實(shí)例5:查找GridViewFind.aspx95實(shí)例5:查找GridViewFind.aspx41實(shí)例5分析本實(shí)例再次采用了以下這種典型的編程方法:從數(shù)據(jù)庫(kù)中取出需要的數(shù)據(jù)“喂”給GridV
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年環(huán)保產(chǎn)品購(gòu)銷合同標(biāo)準(zhǔn)文本一
- 2024-2030年中國(guó)奶茶粉行業(yè)市場(chǎng)銷售渠道及未來(lái)趨勢(shì)發(fā)展分析報(bào)告
- 2024-2030年中國(guó)大數(shù)據(jù)金融行業(yè)發(fā)展創(chuàng)新模式及投資規(guī)劃分析報(bào)告
- 2024-2030年中國(guó)垃圾轉(zhuǎn)運(yùn)車行業(yè)競(jìng)爭(zhēng)格局展望及投資策略分析報(bào)告
- 2024-2030年中國(guó)印刷機(jī)械制造行業(yè)產(chǎn)銷需求及投資策略分析報(bào)告
- 2024年版給排水系統(tǒng)安裝作業(yè)勞務(wù)合作合同版B版
- 2024年智能穿戴設(shè)備設(shè)計(jì)優(yōu)化與功能升級(jí)合同3篇
- 2024年物資購(gòu)銷合同范例
- 眉山藥科職業(yè)學(xué)院《首飾材料與首飾設(shè)計(jì)實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024勞動(dòng)資源開(kāi)發(fā)合同3篇
- 河南省鄭州市二中共同體2023-2024學(xué)年八年級(jí)上學(xué)期期末數(shù)學(xué)試卷(含解析)
- 洛陽(yáng)市2023-2024學(xué)年九年級(jí)上學(xué)期期末考試英語(yǔ)試題和答案
- 《二維材料的未來(lái)》課件
- 砂漿行業(yè)銷售技巧分析
- 初中數(shù)學(xué)的有效教學(xué)(小課課題研究)
- 小學(xué)禁毒教育教學(xué)大綱
- 土石方外運(yùn)方案
- 2023-2024學(xué)年四川省成都市高一上英語(yǔ)期末考試題(含答案和音頻)
- 2024年中考英語(yǔ)二輪復(fù)習(xí)學(xué)案連詞
- 肛腸科患者的疼痛管理策略與實(shí)踐經(jīng)驗(yàn)
- 風(fēng)電項(xiàng)目投資計(jì)劃書(shū)
評(píng)論
0/150
提交評(píng)論