




已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第10章數(shù)據(jù)綁定技術原理,北京理工大學計算機學院金旭亮,ASP.NET程序設計教程,主要內容,10.1數(shù)據(jù)綁定原理10.2GridView基礎知識10.3GridView應用實例10.4數(shù)據(jù)綁定控件的組合使用,2,10.1數(shù)據(jù)綁定原理,只有知其所以然才能知其然,引例:直觀了解數(shù)據(jù)綁定,現(xiàn)場編程展示(參考示例:UseDataBind),4,數(shù)據(jù)綁定的層次結構,5,數(shù)據(jù)庫,ADO.NET,數(shù)據(jù)綁定控件,數(shù)據(jù)源控件,提供顯示和編輯數(shù)據(jù)的可視化界面,IDataSource,DataSourceView,提供對數(shù)據(jù)的訪問接口:增、刪、改、查,與數(shù)據(jù)庫交互,完成信息的增、刪、改、查工作。,信息的存放地,調用,存取,常用的數(shù)據(jù)綁定控件,6,常用的數(shù)據(jù)源控件,7,多種可綁定的數(shù)據(jù)對象,除了綁定到數(shù)據(jù)源這種具有很強功能的對象之外,數(shù)據(jù)綁定控件還可以綁定到最小實現(xiàn)了IEnumerable接口的集合對象(如數(shù)組/HashTable/List)。另外,通過使用數(shù)據(jù)綁定表達式,可以將一些數(shù)據(jù)綁定控件直接與某個函數(shù)或屬性進行綁定。,8,數(shù)據(jù)綁定的三種實現(xiàn)方式:,將數(shù)據(jù)綁定控件的DataSourceID設定為數(shù)據(jù)源控件,數(shù)據(jù)綁定控件即可充分利用數(shù)據(jù)源控件的功能實現(xiàn)對數(shù)據(jù)的增刪改查。這稱為“自動數(shù)據(jù)綁定”。也可以不使用DataSourceID,而是直接將數(shù)據(jù)源賦值給數(shù)據(jù)綁定控件的DataSource屬性,然后再調用數(shù)據(jù)綁定控件的DataBind()方法實現(xiàn)“手工數(shù)據(jù)綁定”。或者直接在頁面中放置綁定表達式,然后在Page_Load中調用頁面類的DataBind()方法實現(xiàn)數(shù)據(jù)綁定。,9,數(shù)據(jù)綁定表達式,第一步:設定數(shù)據(jù)表達式第二步:執(zhí)行Page類中的Bind()方法。Demo:UseDataBind(DataBindingExpression.aspx),10,重要編程提示:直接在頁面中嵌入C#代碼的方法:無須調用Page.Bind()方法,上述代碼總是執(zhí)行。,理解“數(shù)據(jù)綁定模板”,由于要顯示的數(shù)據(jù)通常包含多條結構類似的記錄,因此,經常使用“模板(Template)”來指定單條記錄的顯示格式,然后,數(shù)據(jù)綁定控件自動將這一定義好的模板應用于所有要顯示的記錄??梢葬槍Σ煌膱鼍岸x不同的模板,例如,可為瀏覽狀態(tài)顯示一個只讀的模板(通常用Label來表達信息),然后為編輯狀態(tài)顯示另一個模板(通常用TextBox來向用戶提供修改信息的手段)。大多數(shù)數(shù)據(jù)綁定控件都提供了相應的方法在不同的狀態(tài)間切換(如從瀏覽切換到編輯狀態(tài)),并會自動加載相應的模板,與此同時,還會觸發(fā)相應的事件。,11,在數(shù)據(jù)綁定模板中綁定數(shù)據(jù)(1),當一個ASP.NET控件位于一個數(shù)據(jù)綁定模板中時,可以使用Eval()方法將其的某個屬性與數(shù)據(jù)源中當前數(shù)據(jù)對象的某個屬性相綁定。,12,ClientID:/,Eval方法提供了一個單向的只讀的數(shù)據(jù)值。這就是說,數(shù)據(jù)是從“數(shù)據(jù)源”對象單向傳送給模板中的控件,沒有辦法修改數(shù)據(jù)源對象中的數(shù)據(jù)。,在數(shù)據(jù)綁定模板中綁定數(shù)據(jù)(2),當需要修改數(shù)據(jù)源中的數(shù)據(jù)時,通常采用Bind()方法實現(xiàn)這一功能:,13,ClientName:/,當使用Bind方法時,用戶所做的修改會被傳送回數(shù)據(jù)源控件以實現(xiàn)更新。,數(shù)據(jù)綁定實例分析,Demo:UseDataBind(UseEvalAndBind.aspx),14,示例要點:使用FormView控件綁定到SQLDataSource,定義其編輯和插入模板。,自動綁定VS手工綁定,ASP.NET提供的自動數(shù)據(jù)綁定機制雖然很自動化,幾乎不用編碼就可以完成許多功能,然而,在實際項目中為了實現(xiàn)嚴格的分層架構和保證程序的靈活性與可控性,往往不使用自動綁定,而是手工編程實現(xiàn)數(shù)據(jù)綁定。下面將以最復雜也是最常用的GridView為例,深入介紹數(shù)據(jù)綁定控件的使用方法。,15,10.2GridView基礎知識,以點帶面,舉一反三,形成GridView的全局觀(1),GridView以表格的方式顯示數(shù)據(jù)。,17,GridViewRow對象代表GridView控件中的一行,GridView的Rows屬性代表當前顯示在頁面上所有GridViewRow對象的集合,TableCell代表一個單元格,這是一個控件容器,其中可以放置各種ASP.NET控件。GridViewRow對象的Cells集合代表這一行的所有單元格,形成GridView的全局觀(2),與GridView綁定的數(shù)據(jù)都具有二維表的性質。若綁定的是DataTable,則每個GridView-Row對象負責顯示一個DataRow,而每個TableCell則負責顯示此DataRow中特定字段的值。若綁定的是List,每個GridViewRow對象負責顯示一個T類型的對象,每個TableCell則負責顯示此對象的特定屬性的值。,18,數(shù)據(jù)綁定控件GridView中的列(1),GridView中的列可以用不同方式顯示數(shù)據(jù)。GridView列對象模型,19,數(shù)據(jù)綁定控件GridView中的列(2),BoundedField:直接與數(shù)據(jù)對象的某個“列/屬性”綁定,以文本形式顯示其值。HyperLinkField:根據(jù)數(shù)據(jù)對象某個列(屬性)的值生成一個超鏈接元素()。ImageField:根據(jù)數(shù)據(jù)對象某個列(屬性)的值生成一個元素,顯示一張圖片ButtonField:顯示一個按鈕。CommandField:其實就是擁有特定Command-Name的ButtonField,完成通用的“編輯”、“刪除”和“選擇”功能。TemplateField:模板列,用于自定義GridView的顯示界面,非常靈活與有用。,20,圖示GridView的列與行,21,CommandField,BoundedField,header,footer,Gridview的重要事件,GridView及GridViewRow會觸發(fā)一系列的事件,應用好這些事件非常關鍵,常用的有以下幾個:RowCommand:單擊每行中的按鈕(ButtonField)時觸發(fā),可通過CommandName區(qū)分開是哪個按鈕被點擊。RowDataBound:給每行綁定數(shù)據(jù)時發(fā)生,通常用它來設置模板列中特定控件的屬性。RowDeleting:刪除一行時發(fā)生,可以取消刪除。RowUpdating:更新一行數(shù)據(jù)時發(fā)生,可以取消更新。SelectedIndexChanged:選擇的行發(fā)生改變時發(fā)生。PageIndexChanging:單擊分頁按鈕時發(fā)生。,22,訪問基礎數(shù)據(jù),使用GridViewRow對象的DataItem屬性,可以訪問基礎數(shù)據(jù)對象的屬性。GridView控件的DataKeyNames屬性指定主鍵,每一行GridViewRow會生成一個DataKey對象,整個Gridview控件會有一個DataKey對象的集合(用DataKeys屬性代表)??梢酝ㄟ^Gridview的SelectedDataKey方法獲取當前選中行的DataKey對象,然后再檢索鍵值。,23,掌握GridView編程技巧的關鍵,牢記:GridView只負責數(shù)據(jù)的顯示,它不管數(shù)據(jù)的增刪改查!記住GridView對象模型:行由哪個對象表達,列有幾種類型了解GridView的常用事件,知道這些事件可由哪些對象觸發(fā),高度注意每種事件參數(shù)中包含的信息。,24,10.3GridView應用實例,本節(jié)示例網站GridViewDemo說明,為了清晰地展示出GridView的使用技巧,實例使用手工數(shù)據(jù)綁定方式。綁定的數(shù)據(jù)來自于Clients表,對應的類為ClientInfo,GridView綁定到List集合對象。ClientInfoAccessObj對象包含一系列的方法,使用ADO.NET技術從數(shù)據(jù)庫中提取與更新數(shù)據(jù)。上述兩個類均放置于示例網站的App_Code文件夾下。這種網站架構也用于本系列的大實例HappyBookShop中。,26,實例1:自定義顯示列和列標題,可以讓GridView只顯示特定的列,并且指定列的標題。Demo:CustomizeColumns.aspx,27,實例1要點:,28,從這個例子中可以知道,GridView會根據(jù)綁定的數(shù)據(jù)源自動創(chuàng)建列,這是通過反射實現(xiàn)的。每個列都是一種特定類型的DataControlField,可以通過設置它的一些屬性來定制它的外觀和行為。對于BoundedField,設定它的DataField,可以顯示它所綁定的數(shù)據(jù)對象特定屬性的值。,29,實例2:自定義分頁,當綁定到SqlDataSource時,GridView的分頁功能是自動實現(xiàn)的,不需要編寫一行代碼。然而,當綁定到功能較少的數(shù)據(jù)源,如List時,就必須自己定義分頁代碼了,另外,分頁的格式往往也希望能自定義。Demo:GridViewPaging.aspx,30,每頁顯示5條記錄,自定義分頁按鈕格式,實例2要點:,設置GridView的AllowPaging=True;PageSize=5;在GridView的PageIndexChanging事件中,設置其PageIndex為新頁,然后重新綁定數(shù)據(jù)實現(xiàn)分頁。設置GridView的PagerSettings和PagerStyle屬性自定義分頁按鈕。,31,從這個例子中可以知道,分頁時GridView會觸發(fā)PageIndexChanging事件,相應的,分頁完成時會觸發(fā)PageIndexChanged事件。在GridView中有不少事件是這樣配對的。一般來說,在“-ing”事件中,其參數(shù)e包含了重要的信息,例如分頁事件中的e.NewPageIndex屬性代表了新頁碼。而設置e.Cancel=true則可以取消這一操作。當需要修改GridView顯示的數(shù)據(jù)時(比如跳轉到新的一頁),需要重新綁定數(shù)據(jù)。,32,GridView自定義分頁,GridView具備自動分頁的特性。這就是說,只要將綁定到一個數(shù)據(jù)源,并設置其每頁顯示的行數(shù)和要顯示的頁碼,GridView會自動從數(shù)據(jù)源中提取數(shù)據(jù)(從開頭第一頁到要顯示的頁,然后丟棄前面的N1頁,只顯示第N頁)。對于List,由于其實現(xiàn)了IList接口,因此也具備自動分頁的特性??梢酝ㄟ^每次只提取所需要的數(shù)據(jù)來提升性能,這時需要人工編寫代碼來完成數(shù)據(jù)的提取工作,然后再將數(shù)據(jù)綁定到GridView。這種方法稱為“自定義分頁”。為達到最佳性能,往往還禁用GridView的視圖狀態(tài)(EnableViewStatefalse),完全用其他標準的ASP.NET控件來實現(xiàn)分頁功能。,33,實例2延伸:GridView自定義分頁,Demo:GridViewCustomizePaging.aspx,34,(1)查看一下源文件,禁用ViewState可以減少多少數(shù)據(jù)量的傳輸?。?)GridView內置對于分頁界面的定制,只需添加一個數(shù)據(jù)分頁模板PagerTemplate就可以實現(xiàn)同這個示例一樣的功能??赏ㄟ^查詢MSDN實現(xiàn)示例的這種導航方式。,實例3:排序,GridViewSort.aspx,35,即可以單擊按鈕,也可以單擊列標題進行排序,支持多列排序,實例3要點:,響應Sorting事件,在此事件中編碼進行數(shù)據(jù)綁定。利用委托實現(xiàn)對泛型數(shù)組中的對象進行排序。GridView的一個基本編程方法:給GridView什么樣的數(shù)據(jù),它就忠實地呈現(xiàn)什么樣的數(shù)據(jù)。自我拓展訓練:本示例是升序排列,如何讓其也支持降序排列?,36,實例4:記錄的刪除,GridViewDelete.aspx,37,實例4要點,ButtonField可以綁定到數(shù)據(jù)源以顯示不同的文字,單擊它GridView會觸發(fā)RowCommand事件。此事件參數(shù)e有以下重要屬性:e.CommandName屬性表明哪個按鈕被單擊。e.CommandArgument屬性表明是哪一行,這個值是由GridView自動填充的。e.CommandSource則代表了GridView自身。,38,GridView預定義的CommandName,當一個ButtonField的CommandName是以下預定義值時,相應的事件被觸發(fā):Cancel:觸發(fā)“取消”事件。Delete:觸發(fā)“刪除”事件Edit:觸發(fā)“編輯”事件Page:觸發(fā)“分頁”事件Select:觸發(fā)“選擇”事件Sort:觸發(fā)“排序”事件Update:觸發(fā)“更新”事件CommandField是特殊的ButtonField,其CommandName是上述預定義值之一。,39,數(shù)據(jù)主鍵值的獲取,當需要從數(shù)據(jù)庫刪除記錄時,需要知道要刪除記錄的主鍵。GridView有一個DataKeyNames屬性,進行綁定前必須將其設置為主鍵值名。當需要獲取主鍵時,根據(jù)指定行的索引,從GridView的“DataKeys索引.Value”得到主鍵值。提醒:這是編程中的一個關鍵點!,40,實例5:查找,GridViewFind.aspx,41,實例5分析,本實例再次采用了以下這種典型的編程方法:從數(shù)據(jù)庫中取出需要的數(shù)據(jù)傳送給GridView。對于分頁:則利用了GridView的自動分頁功能。通過設置其PageIndex實現(xiàn)分頁。,42,實例6:選中并編輯記錄,Demo:GridViewEdit.aspx,43,實例6的要點,使用GridView的“選擇”功能,在GridView的SelectedIndexChanging事件中顯示一個編輯面板供用戶修改記錄。此面板完全是自定義的。SelectIndexChanging/SelectIndexChanged事件在主從表顯示中很有用。注意示例程序是如何取出選中記錄的當前值的。txtName.Text=GridView1.Rowse.NewSelectedIndex.Cells1.Text;拓展訓練:還可以利用GridView內部集成的編輯功能讓其進入編輯狀態(tài),在RowEditing中完成顯示編輯面板的任務。觸發(fā)RowEditing事件的方法在示例網頁中有說明,同學們課后需完成這一作業(yè)。,44,GridView的模板列簡介,在GridView的模板列中,可以添加各種Web控件,并通過編寫代碼實現(xiàn)特定的數(shù)據(jù)處理工作,然后再將結果顯示在相應的控件中。,45,實例7:模板列的應用批處理刪除,一次選取多條記錄進行統(tǒng)一處理。Demo:BatchDelete.aspx,46,實例7要點匯總,在模板中可以放置任意一種ASP.NET控件,從而使其成為最靈活的一種數(shù)據(jù)綁定方式,為廣大開發(fā)者所喜用。當需要訪問特定行中的模板列中的某個特定控件時,使用GridViewRow對象的FindControl(控件ID)方法,這是一個非常重要的編程方法。GridView的Rows集合存放的是當前顯示在頁面上的行對象的集合。注意要使用視圖狀態(tài)保存當前頁碼,以便用戶在刪除記錄后仍能回到上次工作的地方。GridView的DataKeyNames不要忘了設置,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑垃圾能源利用方案及其項目實施可行性分析
- 2025年智能物流機器人研發(fā)及產業(yè)鏈布局與技術創(chuàng)新分析報告
- 應試寶典的VB考試試題及答案
- 2025年稅法考試的實務解析試題及答案
- 計算機一級Photoshop考試形式試題及答案
- 2025版高考數(shù)學二輪復習第1篇專題1高考送分專題自檢第1講集合與常用邏輯用語復數(shù)與平面向量學案
- 教育資源共享平臺運營2025年成人教育終身學習體系構建分析報告
- 現(xiàn)代漢語考試失分原因分析試題及答案
- 2025年稅法考試競技場試題及答案
- WPS數(shù)據(jù)監(jiān)控與分析技巧試題及答案
- 個稅贍養(yǎng)老人專項附加扣除分攤協(xié)議-綜合因素分攤
- 污水處理廠排水管道施工流程
- 《斷魂槍》老舍課件
- 2025至2030年中國消失模專用泡沫數(shù)據(jù)監(jiān)測研究報告
- 2024年音樂節(jié)承辦協(xié)議3篇
- 中考數(shù)學總復習第四章第20課時解直角三角形課件
- 2024年度合資成立新能源研發(fā)分公司合作協(xié)議范本3篇
- 2024-2030年中國內河碼頭產業(yè)前景預測規(guī)劃研究報告
- 廠房屋面彩更換施工方案設計
- 無人機就業(yè)規(guī)劃
- 護理個案管理師
評論
0/150
提交評論