Lp trình và Thit k Web 2 Bà i 6 Bà i 6 KtKt bucbuc dd liuliu vivi ASP .NETASP .NET KtKt bucbuc dd liuliu vivi ASP .NETASP .NET Ths Trn Th Bích Hnh Ths . Trn Th Bích Hnh Khoa CNTT Khoa CNTT –– H.KHTNH.KHTN © 2009 Khoa Công ngh thông tin LptrìnhvàThitk Web 2 – Bài 6: Ktbucd liu (DataBinding) NidNid Ni d ung Ni d ung Kt buc d liu Kt buc d liu DataSource Control DataBound Control Biu thc kt buc d liu Tham sô hóa câu truy vn © 2009 Khoa CNTT - HKHTN 2 Lp trình và Thitk Web 2 – Bài 6: Ktbucd liu (DataBinding) NidNid Ni d ung Ni d ung Kt buc d liu Kt buc d liu DataSource Control DataBound Control Biu thc kt buc d liu Tham sô hóa câu truy vn © 2009 Khoa CNTT - HKHTN 3 LptrìnhvàThitk Web 2 – Bài 6: Ktbucd liu (DataBinding) KtKt b b dd lili ii ASP NETASP NET KtKt b u c b u c dd li u li uv i v i ASP . NETASP . NET Kt buc d liu bao gm : Kt buc d liu bao gm : – Ly& Hinth d liu Sp xp phân trang cache d liu – Sp xp , phân trang , cache d liu – Cpnht, thêm, xóa d liu © 2009 Khoa CNTT - HKHTN 4 Lp trình và Thitk Web 2 – Bài 6: Ktbucd liu (DataBinding) KtKt b b dd lili ii ASP NETASP NET KtKt b u c b u c dd li u li uv i v i ASP . NETASP . NET Gm 2 loi control h tr vic truy xut d liu : Gm 2 loi control h tr vic truy xut d liu : DataSource control DataBound Control ObjectDataSource SqlDataSource List Controls AdRotator AccessDataSource XmlDataSource SiteMapDataSource DataList DetailsView FormView SiteMapDataSource FormView GridView Menu - Không phát sinh giao din - Phát sinh giao din - Kt buc đn mt Repeater TreeView - Ktni vi CSDL - c ghi d liu - Làm cu ni trung gian gia d li u và controls khác Kt buc đn mt DataSource đ lyd liu thông qua DataSourceID - ThitlpThuc tính khóa thông qua DataKeyNames © 2009 Khoa CNTT - HKHTN 5 thông qua DataKeyNames LptrìnhvàThitk Web 2 – Bài 6: Ktbucd liu (DataBinding) NidNid Ni d ung Ni d ung Kt buc d liu Kt buc d liu DataSource Control DataBound Control Biu thc kt buc d liu Tham sô hóa câu truy vn © 2009 Khoa CNTT - HKHTN 6 Lp trình và Thitk Web 2 – Bài 6: Ktbucd liu (DataBinding) DtS C t lDtS C t l D a t a S ource C on t ro lD a t a S ource C on t ro l DataSource Control Ý ngha s dng SqlDataSource Ktni d liu vi MS SQL Server, OLE DB, ODBC, Oracle, ObjectDataSource Ktni d liu vi các đi tng nghip v, lp đi tng, AccessDataSource Ktni d liu vi MS Access XmlDataSource K tnid liuvitptinXML XmlDataSource K t ni d liu vi tp tin XML SiteMapDataSource Kt ni d liu vi tp tin Sitemap © 2009 Khoa CNTT - HKHTN 7 LptrìnhvàThitk Web 2 – Bài 6: Ktbucd liu (DataBinding) DtS C t lDtS C t l CtiCti D a t a S ource C on t ro lD a t a S ource C on t ro l C onnec ti on C onnec ti on © 2009 Khoa CNTT - HKHTN 8 Lp trình và Thitk Web 2 – Bài 6: Ktbucd liu (DataBinding) DtS C t lDtS C t l Wb fiWb fi D a t a S ource C on t ro l D a t a S ource C on t ro l –– W e b .con fi g W e b .con fi g <? l i " 1 0 "?> <? xm l vers i on= " 1 . 0 "?> <configuration> < appSettings/> < ti St i > < connec ti on St r i ngs > <add name=“QLTV_CnnString” connectionString="Data Source=.\SQLEXPRESS; AttachDbFilename= |DataDirectory|\QLTV.mdf; Integrated Sec rit Tr e Integrated Sec u rit y= Tr u e ; User Instance=True" providerName="System.Data.SqlClient" /> < add name " AdventureWorks CnnString “ < add name = " AdventureWorks _ CnnString “ connectionString="Data Source=SECURITYAGENT\; Initial Catalog=AdventureWorks; User ID=sa;Password=sa" providerName " System Data SqlClient "/> providerName = " System . Data . SqlClient " /> </connectionStrings> </ configuration> © 2009 Khoa CNTT - HKHTN 9 LptrìnhvàThitk Web 2 – Bài 6: Ktbucd liu (DataBinding) DtS C t lDtS C t l SlDtSSlDtS D a t a S ource C on t ro l D a t a S ource C on t ro l S q lD a t a S ource S q lD a t a S ource <body> <form id="form1" runat="server"> < div> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString=" <%$ ConnectionStrings:AdventureWorks_CnnString %>“ SelectCommand="SELECT [ContactID], [CreditCardID], [ModifiedDate] FROM [ContactCreditCard]"> </ asp:SqlDataSource> </div> </ form> </ body> © 2009 Khoa CNTT - HKHTN 10 Lp trình và Thitk Web 2 – Bài 6: Ktbucd liu (DataBinding) DtS C t lDtS C t l ThiThi tt ll ââ tt SQLSQL D a t a S ource C on t ro lD a t a S ource C on t ro l –– ThiThi tt ll ppc â uc â u t ruy t ruy vv nn SQLSQL © 2009 Khoa CNTT - HKHTN 11 LptrìnhvàThitk Web 2 – Bài 6: Ktbucd liu (DataBinding) NidNid Ni d ung Ni d ung Kt buc d liu Kt buc d liu DataSource Control DataBound Control Biu thc kt buc d liu Tham sô hóa câu truy vn © 2009 Khoa CNTT - HKHTN 12 Lp trình và Thitk Web 2 – Bài 6: Ktbucd liu (DataBinding) DtB dC t lDtB dC t l D a t a B oun d C on t ro lD a t a B oun d C on t ro l DataBound Control Ý ngha s dng GridView Hinth d liu di dng bng, cho phép sp xp trên ct, phân trang d liu, cp nht hoc xóa d liu DetailsView Hinth mt dòng d liutimtthi đim di dng bng , cho phép phân trang, cpnhthocxóad liu FormView Ging DetailsView, hinthi di dng Form, cho phép đnh ngha View t các control và kt buc d liu cho các control các control DataList Hinth d liu di dng danh sách. Cho phép thay đi layout hin th nhiuct Repeater Hinth d liudi dng danh sách. Tđnh ngha cách thchinth (Template) © 2009 Khoa CNTT - HKHTN 13 LptrìnhvàThitk Web 2 – Bài 6: Ktbucd liu (DataBinding) GidViGidVi G r id Vi ew G r id Vi ew © 2009 Khoa CNTT - HKHTN 14 Lp trình và Thitk Web 2 – Bài 6: Ktbucd liu (DataBinding) Dtil ViDtil Vi D e t a il s Vi ew D e t a il s Vi ew © 2009 Khoa CNTT - HKHTN 15 LptrìnhvàThitk Web 2 – Bài 6: Ktbucd liu (DataBinding) FViFVi F orm Vi ew F orm Vi ew © 2009 Khoa CNTT - HKHTN 16 Lp trình và Thitk Web 2 – Bài 6: Ktbucd liu (DataBinding) Dt LitDt Lit D a t a Li s tD a t a Li s t © 2009 Khoa CNTT - HKHTN 17 LptrìnhvàThitk Web 2 – Bài 6: Ktbucd liu (DataBinding) RtRt R epea t e rR epea t e r © 2009 Khoa CNTT - HKHTN 18 Lp trình và Thitk Web 2 – Bài 6: Ktbucd liu (DataBinding) Dt B dC t lDt B dC t l TltTlt D a t a B oun d C on t ro l D a t a B oun d C on t ro l T emp l a t es T emp l a t es Templates Ý ngha HeaderTemplate Qui đnh ni dung & layout ca dòng Tiêu đ danh sách ItemTem p late Qui đ nh n i dun g & la y out hinthi các m cd li u p gy SelectedItemTemplate Qui đnh ni dung & layout ca mcd liu đang đc chn EditItemTemplate Qui đnh ni dung & layout ca mcd liu đang đc chnh sa(cpnht) AlternatingItem Templa t e Qui đ nh ni dung & layout ca c a m c d li u k ê ti p AlternatingItem Templa t e Qui đ nh ni dung & layout ca c a m c d li u k ê ti p SeperatorTemplate Qui đnh hình thcth hin Phân cách giacácmcd liu liu FooterTemplate Qui đnh ni dung & layout ca dòng cui danh sách © 2009 Khoa CNTT - HKHTN 19 PagerTemplate Qui đnh hình thcthê hinchcnng phân trang LptrìnhvàThitk Web 2 – Bài 6: Ktbucd liu (DataBinding) Ví dVí d TltTlt Ví d Ví d T emp l a t es T emp l a t es © 2009 Khoa CNTT - HKHTN 20 Lp trình và Thitk Web 2 – Bài 6: Ktbucd liu (DataBinding) Dt B dC t lDt B dC t l ThTh títí hh D a t a B oun d C on t ro l D a t a B oun d C on t ro l Th u Th u cc títí n h n h Thuctính Ýngha DataSourceID Thitlp ngund liu DataKe y Names Thitl p các thu ctínhkhóatron g bn g d li u y p g g AllowSorting Tt/Btchcnng t đng spxp (GridView) AllowPa g in g Tt/B tchcnn g t đ n g p hân tran g gg g g p g PageSize Qui đnh Sô dòng d liuhinthi trong 1 trang (GridView) Pa g eIndex Ch sô tran g hinhành g g ItemIndex Ch sô mcd liu hinhành EditItemIndex Ch sô mcd liu đang đc cpnht AutoGenerateRows/Items T đng phát sinh hình thchinthi tng ng viCSDL AutoGenerateDelete /Edit/ T đ ng phá t sinh cá c nú t Delete/Edit/Insert © 2009 Khoa CNTT - HKHTN 21 AutoGenerateDelete /Edit/ InsertButton T đ ng phá t sinh cá c nú t Delete/Edit/Insert LptrìnhvàThitk Web 2 – Bài 6: Ktbucd liu (DataBinding) Dt B dC t lDt B dC t l SS kiki D a t a B oun d C on t ro l D a t a B oun d C on t ro l SS kiki nn S kinÝngha Item[Row]Deleting/Editing/Updating /Inserting S kin phát sinh sau khi click các nút Delete/Edit/Update/Insert Item[Row]Deleted/Edited/Updated/ Inserted S kin sau khi thc thi xong thao tác Delete/Edit/Update/Insert d liu RowCancelingEdit S kinkhiclick nút Cancel chê đô Edit (GridView) PageIndexChanged S ki n chuy n trang PageIndexChanged S ki n chuy n trang SelectedIndexChanged S kin chn1 mc/dòng d liu Sorting S kin phát sinh sau khi click chcnng sort Sorted S kin sau khi thc thi xong chcnng sort © 2009 Khoa CNTT - HKHTN 22 Lp trình và Thitk Web 2 – Bài 6: Ktbucd liu (DataBinding) Ví dVí d Ví d Ví d protected void GridViewCategories_RowUpdating(object sender, ii Gr i dV i ewUpdateEventArgs e) { // H y b l nh Update n u không th a đi uki n // H y b l nh Update n u không th a đi u ki n try { int id = Int32.Parse(e.Keys["CategoryId"].ToString()); object newName = e.NewValues["CategoryName"]; object oldName = e.OldValues["CategoryName“]; if ( ld ) if ( newName = = o ld Name ) throw new Exception(); } catch { }{ e.Cancel = true; } © 2009 Khoa CNTT - HKHTN } 23 LptrìnhvàThitk Web 2 – Bài 6: Ktbucd liu (DataBinding) NidNid Ni d ung Ni d ung Kt buc d liu Kt buc d liu DataSource Control DataBound Control Biu thc kt buc d liu Tham sô hóa câu truy vn © 2009 Khoa CNTT - HKHTN 24 Lp trình và Thitk Web 2 – Bài 6: Ktbucd liu (DataBinding) BiBi thth ktkt b b dd lili Bi u Bi u th c th c ktkt b u c b u c dd li u li u Cú pháp chung cho vic kt buc (Data Binding) cho các Cú pháp chung cho vic kt buc (Data Binding) cho các Data bound control trong ASP.NET : <%# Biuthcktbuc %> <%# Biu thc kt buc %> Vicktbucd liu trong data source ca các control s đcthchin khi phng thc DataBind() đcgi © 2009 Khoa CNTT - HKHTN 25 LptrìnhvàThitk Web 2 – Bài 6: Ktbucd liu (DataBinding) <html xmlns="http://www.w3.org/1999/xhtml" > < body > < body > <form id="form1" runat="server"> < div> < asp:DataList ID="MyList" runat="server"> <ItemTemplate> Here is a value: <%# Container.DataItem %> </ ItemTemplate> </ asp : DataList > </ asp : DataList > </div> </ form> </ body> </html> © 2009 Khoa CNTT - HKHTN 26 Lp trình và Thitk Web 2 – Bài 6: Ktbucd liu (DataBinding) Bi th ktb d liBi th ktb d li Bi u th c kt b u c d li u Bi u th c kt b u c d li u Thuc tính đn Thuc tính đn VD: <%# custID %> Tp hp VD: <asp:ListBox id="List1“ datasource='<%# myArray %>‘ runat="server"> Biu thc VD: <%# (cst.FirstName + " " + cst.LastName )%> Ktqu cavicgiphng thc Kt qu ca vic gi phng thc VD: <%# GetBalance(custID) %> <% # Eval ( CustomerID ) %> © 2009 Khoa CNTT - HKHTN # ( ) <%# Bind(FirstName) %> 27 LptrìnhvàThitk Web 2 – Bài 6: Ktbucd liu (DataBinding) Bi th ktb d liBi th ktb d li Ví dVí d Bi u th c kt b u c d li u Bi u th c kt b u c d li u –– Ví d Ví d <body> < form id="form1" runat="server"> i <d i v> < asp:DropDownList ID="StateList" runat="server" AutoPostBack="True"> < asp:ListItem>IN</asp:ListItem> < asp:ListItem>KS</asp:ListItem> i / i <asp:L i stItem>MD< / a sp:L i stItem> < asp:ListItem>MI</asp:ListItem> < asp:ListItem>OR</asp:ListItem> < asp:ListItem>UT</asp:ListItem> / DDLit < / a sp : D rop D own Li s t > Selected State: < asp:Label ID="Label1" tt ' %#SttLitSl tdIt T t%' t ex t = ' < %# St a t e Li s t . S e l ec t e dIt em. T ex t % > ' runat="server" /> </ div> </ form> </ bd > </ b o d y > public partial class _ Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { © 2009 Khoa CNTT - HKHTN 28 Page.DataBind(); } } Lp trình và Thitk Web 2 – Bài 6: Ktbucd liu (DataBinding) NidNid Ni d ung Ni d ung Kt buc d liu Kt buc d liu DataSource Control DataBound Control Biu thc kt buc d liu Tham sô hóa câu truy vn © 2009 Khoa CNTT - HKHTN 29 LptrìnhvàThitk Web 2 – Bài 6: Ktbucd liu (DataBinding) ThTh ôô hóhó ââ tt Th am Th am ss ôô hóhó aac â uc â u t ruy t ruy vv nn S d ng đ i v i cá c câu truy v n có đi u ki n ho c c n S d ng đ i v i cá c câu truy v n có đi u ki n ho c c n nhnvàogia tr – Select * from Table Where … – Insert into Table Values(…) – Delete Table Where – Delete Table Where … – Update Table Set … Where … Cách thchin 1. Tham sô hóa câu truy vn SQL cho DataSource control 2. nh ngha nhóm tham sô tng ng vi câu truy vn 3. nh ngha ngungia tr cho các tham sô © 2009 Khoa CNTT - HKHTN 30 Lp trình và Thitk Web 2 – Bài 6: Ktbucd liu (DataBinding) BB 11 ThTh hóhó ââ tt SQLSQL BB cc 1 1 –– Th am Th am s s hó a hó ac â uc â u t ruy t ruy v nv n SQLSQL SQL Data Provider : @ TenThamSo SQL Data Provider : @ TenThamSo SELECT * FROM HocSinh WHERE tenhocsinh = @ten INSERT INTO HocSinh(id_hocsinh, tenhocsinh, dtb) VALUES(@id, @ten, @dtb) Các provider khác : ? Các provider khác : ? SELECT * FROM HocSinh WHERE tenhocsinh = ? INSERT INTO HocSinh ( id hocsinh , tenhocsinh , dtb ) INSERT INTO HocSinh ( id _ hocsinh , tenhocsinh , dtb ) VALUES(?, ?, ?) © 2009 Khoa CNTT - HKHTN 31 LptrìnhvàThitk Web 2 – Bài 6: Ktbucd liu (DataBinding) BB 22 hh hh hóhó thth ôô BB cc 2 2 –– n h n h ng h ng h aan hó n hó mm th am th am ss ôô Cá c nhó m tham s ô tng ng v i câu truy v n Cá c nhó m tham s ô tng ng v i câu truy v n – <SelectParameters> </SelectParameters> < InsertParameters ></ InsertParameters > – < InsertParameters > </ InsertParameters > – <DeleteParameters> </DeleteParameters> UdtP t / UdtP t – < U p d a t e P arame t ers> < / U p d a t e P arame t ers> © 2009 Khoa CNTT - HKHTN 32 Lp trình và Thitk Web 2 – Bài 6: Ktbucd liu (DataBinding) BB 33 hh hh ii t t hh thth ôô BB cc 3 3 –– n h n h ng h ng h aa ngungu nng i ag i a t r t r c h oc h o th am th am ss ôô Loithamsô Các Thuctínhquantrng Name, DBT T DBT ype, T ype, DefaultValue, ConvertEmptyStringToNull, Direction <asp:Parameter> Name <asp:ControlParameter> ControlID, PropertyName <asp:FormParameter> FormField <asp:QueryStringParameter> QueryStringField CkiP t CkiN <asp: C oo ki e P arame t er> C oo ki e N ame <asp:SessionParameter> SessionField © 2009 Khoa CNTT - HKHTN 33 LptrìnhvàThitk Web 2 – Bài 6: Ktbucd liu (DataBinding) Ví dVí d Ví d Ví d <asp:AccessDataSource ID="AccessDataSourceCategory" runat="server" ii Confl i ctDetect i on="CompareAllValues" DataFile="~/App_Data/Products.mdb" SelectCommand =" SELECT * FROM [Categories] “ SelectCommand SELECT FROM [Categories] UpdateCommand="UPDATE [Categories] SET [Name] = ? WHERE [CategoryId] = ? AND [Name] = ?" Old l t tSt i "iil{ 0 }" Old Va l uesParame t erForma tSt r i ng= " or i g i na l_{ 0 }" > <UpdateParameters> <as p :Parameter N ame="Name" T yp e="Strin g " / > p yp g / <asp:Parameter Name="original_CategoryId" Type="Int32" /> <asp:Parameter Name="original_Name" Type="String" /> </UpdateParameters> </asp:AccessDataSource> © 2009 Khoa CNTT - HKHTN 34 Lp trình và Thitk Web 2 – Bài 6: Ktbucd liu (DataBinding) SS kiki DtSDtS CtlCtl SS kiki nnc c aa D a t a S ource D a t a S ource C on t ro lC on t ro l S ki n Ý n g ha g Seleting/Inserting/Deleting/Updating S kin trc khi thchin thao tác select/insert/delete/update Selected/Inserted/Deleted/Updated S kin sau khi thchin thao tác select/insert/delete/update protected void AccessDataSourceCategory_Inserting(object sender, S q lDataSourceStatusEventAr g s e) qg { // Hybo thao tác Insert if ([iukinkhôngtha]) e Cancel true e . Cancel = true ; } © 2009 Khoa CNTT - HKHTN 35 LptrìnhvàThitk Web 2 – Bài 6: Ktbucd liu (DataBinding) Ví dVí d Ví d Ví d protected void AccessDataSourceCategory_Inserted(object sender, SqlDataSourceStatusEventArgs e) { // ó á á // Ki m tra n u c ó l i p h á t sinh tron g qu á trình thchin insert (ví d trùng khóa) thi xutthôngbáoli Exce p tion ex = e.Exce p tion ; p p ; if (ex != null) { e.ExceptionHandled = true; LabelMessage.Text = ex.Message; } } © 2009 Khoa CNTT - HKHTN 36 Lp trình và Thitk Web 2 – Bài 6: Ktbucd liu (DataBinding) TT ktkt T ng T ng ktkt DataSource Control DataSource Control – Tham sô hóa câu truy vn X ly s ki n – X ly s ki n DataBound Control – Paging, Sorting – Edit Item Template – Simple Databinding – Custom Databindin g g © 2009 Khoa CNTT - HKHTN 37 . Controls AdRotator AccessDataSource XmlDataSource SiteMapDataSource DataList DetailsView FormView SiteMapDataSource FormView GridView Menu - Không phát sinh giao din - Phát sinh giao din - Kt buc đn mt Repeater TreeView - Ktni vi CSDL - c ghi d liu - Làm cu ni trung gian gia d. liu thông qua DataSourceID - ThitlpThuc tính khóa thông qua DataKeyNames © 2009 Khoa CNTT - HKHTN 5 thông qua DataKeyNames LptrìnhvàThitk Web 2 – Bài 6: Ktbucd liu (DataBinding) NidNid Ni . thchinth (Template) © 2009 Khoa CNTT - HKHTN 13 LptrìnhvàThitk Web 2 – Bài 6: Ktbucd liu (DataBinding) GidViGidVi G r id Vi ew G r id Vi ew © 2009 Khoa CNTT - HKHTN 14 Lp trình và Thitk