L p trình và Thi t k Web 2
Bài 6
K t
K t bu c bu c d d li u li u v i v i ASP NET ASP NET
K t
K t bu c bu c d d li u li u v i v i ASP NET ASP NET
Ths Tr n Th Bích H nh
Khoa CNTT
© 2009 Khoa Công ngh thông tin
N i d
N i dung
K t bu c d K t bu c d li u li u
DataSource Control
DataBound Control
Bi u th c k t bu c d li u
Tham sô hóa câu truy v n
© 2009 Khoa CNTT - HKHTN
2
L p trình và Thi t k Web 2 – Bài 6: K t bu c d li u (DataBinding)
N i d
N i dung
K t bu c d K t bu c d li u li u
DataSource Control
DataBound Control
Bi u th c k t bu c d li u
Tham sô hóa câu truy v n
L p trình và Thi t k Web 2 – Bài 6: K t bu c d li u (DataBinding)
K t
K t b b d lili ii ASP NET ASP NET
K t
K t bu c bu c d d li u li u v i v i ASP.NET ASP.NET
K t bu c d K t bu c d li u bao g m : li u bao g m : – L y & Hi n th d li u
– S p x p, phân trang, cache d li u – C p nh t, thêm, xóa d li u
Trang 2K t
K t b b d lili ii ASP NET ASP NET
K t
K t bu c bu c d d li u li u v i v i ASP.NET ASP.NET
G m 2 lo i control h tr vi c truy xu t d G m 2 lo i control h tr vi c truy xu t d li u : li u :
ObjectDataSource
SqlDataSource
List Controls AdRotator AccessDataSource
XmlDataSource
SiteMapDataSource
DataList DetailsView FormView SiteMapDataSource FormView
GridView Menu
- Không phát sinh giao di n - Phát sinh giao di n
- K t bu cđ n m t
Repeater TreeView
- K t n i v i CSDL
- c ghi d li u
- Làm c u n i trung gian gi a
d li u và controls khác
K t bu cđ n m t DataSourceđ l y d li u thông qua DataSourceID
- Thi t l p Thu c tính khóa thông quaDataKeyNames
© 2009 Khoa CNTT - HKHTN
5
thông qua DataKeyNames
N i d
N i dung
K t bu c d K t bu c d li u li u
DataSource Control
DataBound Control
Bi u th c k t bu c d li u
Tham sô hóa câu truy v n
© 2009 Khoa CNTT - HKHTN
6
L p trình và Thi t k Web 2 – Bài 6: K t bu c d li u (DataBinding)
DataSource Control
DataSource Control Ý ngh a s d ng
SqlDataSource K t n i d li u v i MS SQL Server, OLE DB, ODBC,
Oracle,
ObjectDataSource K t n i d li u v i các đ i t ng nghi p v , l p đ i
t ng, AccessDataSource K t n i d li u v i MS Access
XmlDataSource K t n i d li u v i t p tin XML
XmlDataSource K t n i d li u v i t p tin XML
SiteMapDataSource K t n i d li u v i t p tin Sitemap
L p trình và Thi t k Web 2 – Bài 6: K t bu c d li u (DataBinding)
DataSource Control DataSource Control Connection Connection
Trang 3D t S C t l
DataSource Control
DataSource Control – – Web.config Web.config
<? l i "1 0"?>
<?xml version="1.0"?>
<configuration>
<appSettings/>
< ti St i >
<connectionStrings>
<add name=“QLTV_CnnString”
connectionString="Data Source=.\SQLEXPRESS;
AttachDbFilename=|DataDirectory|\QLTV.mdf;
Integrated Sec rit Tr e Integrated Security=True;
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
D t S C t l S lD t S S lD t S DataSource Control
DataSource Control SqlDataSource SqlDataSource
<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
L p trình và Thi t k Web 2 – Bài 6: K t bu c d li u (DataBinding)
DataSource Control
DataSource Control – – Thi Thi tt ll p p câu câu truy truy v v n n SQL SQL
L p trình và Thi t k Web 2 – Bài 6: K t bu c d li u (DataBinding)
N i d
N i dung
K t bu c d K t bu c d li u li u
DataSource Control
DataBound Control
Bi u th c k t bu c d li u
Tham sô hóa câu truy v n
Trang 4D t B d C t l
DataBound Control
GridView Hi n th d li u d i d ng b ng , cho phép s p x p trên
c t, phân trang d li u, c p nh t ho c xóa d li u
DetailsView Hi n th m t dòng d li u t i m t th i đi m d i d ng
b ng , cho phép phân trang, c p nh t ho c xóa d li u
FormView Gi ng DetailsView, hi n thi d i d ng Form , cho phép
đ nh ngh a View t các control và k t bu c d li u cho các control
DataList Hi n th d li u d i d ng danh sách Cho phép thay
đ i layout hi n th nhi u c t
Repeater Hi n th d li u d i d ng danh sách T đ nh ngh a
cách th c hi n th (Template)
© 2009 Khoa CNTT - HKHTN
13
G id Vi Grid View
© 2009 Khoa CNTT - HKHTN
14
L p trình và Thi t k Web 2 – Bài 6: K t bu c d li u (DataBinding)
D t il Vi
Details View
L p trình và Thi t k Web 2 – Bài 6: K t bu c d li u (DataBinding)
Form View
Trang 5D t Li t
© 2009 Khoa CNTT - HKHTN
17
Repeater
© 2009 Khoa CNTT - HKHTN
18
L p trình và Thi t k Web 2 – Bài 6: K t bu c d li u (DataBinding)
D t B d C t l T T l t l t
Data Bound Control
Data Bound Control Templates Templates
Header Template Qui đ nh n i dung & layout c a dòng Tiêu đ danh sách
Item Template p Qui đ nh n i dung & layout hi n thi các g y m c d li u
SelectedItem Template Qui đ nh n i dung & layout c a m c d li u đang đ c
ch n EditItem Template Qui đ nh n i dung & layout c a m c d li u đang đ c
ch nh s a (c p nh t) AlternatingItem Template Qui đ nh n i dung & layout c a c a m c d li u kê ti p
AlternatingItem Template Qui đ nh n i dung & layout c a c a m c d li u kê ti p
Seperator Template Qui đ nh hình th c th hi n Phân cách gi a các m c d
li u
L p trình và Thi t k Web 2 – Bài 6: K t bu c d li u (DataBinding)
Ví d T T l t l t
Ví d
Ví d Templates Templates
Trang 6D t B d C t l
D t B d C t l Th Th tí tí h h
Data Bound Control
Data Bound Control Thu Thu c c tí tính nh
DataSourceID Thi t l p ngu n d li u
DataKeyNames y Thi t l p p các thu c tính khóa trong b ng d li u g g
AllowSorting T t/B t ch c n ng t đ ng s p x p (GridView)
AllowPaging g g T t/B t ch c n ng t g đ ng g phân trang p g
PageSize Qui đ nh Sô dòng d li u hi n thi trong 1 trang (GridView)
PageIndex g Ch sô trang g hi n hành
EditItemIndex Ch sô m c d li u đang đ c c p nh t
AutoGenerateRows/Items T đ ng phát sinh hình th c hi n thi t ng ng v i CSDL
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
Data Bound Control Data Bound Control S S ki ki n n
Item[Row]Deleting/Editing/Updating /Inserting
S ki n phát sinh sau khi click các nút Delete/Edit/Update/Insert
Item[Row]Deleted/Edited/Updated/
Inserted
S ki n sau khi th c thi xong thao tác Delete/Edit/Update/Insert d li u RowCancelingEdit S ki n khi click nút Cancel chê đô Edit
(GridView)
SelectedIndexChanged S ki n ch n 1 m c/dòng d li u
© 2009 Khoa CNTT - HKHTN
22
L p trình và Thi t k Web 2 – Bài 6: K t bu c d li u (DataBinding)
Ví d
protected void GridViewCategories_RowUpdating(object sender,
i i
GridViewUpdateEventArgs e)
{
// H y b l nh Update n u không th a đi u ki 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 (newName == oldName) throw new Exception();
} catch {
e.Cancel = true;
}
}
L p trình và Thi t k Web 2 – Bài 6: K t bu c d li u (DataBinding)
N i d
N i dung
K t bu c d K t bu c d li u li u
DataSource Control
DataBound Control
Bi u th c k t bu c d li u
Tham sô hóa câu truy v n
Trang 7Bi th k t k t b b d lili
Bi u
Bi u th c th c k t k t bu c bu c d d li u
Cú pháp chung cho vi c k t bu c (Data Binding) cho các
Data bound control trong ASP.NET :
<%# Bi u th c k t bu c %>
<%# Bi u th c k t bu c %>
Vi c k t bu c d li u trong data source c a các control s
đ c th c hi n khi ph ng th c DataBind() đ c g i
© 2009 Khoa CNTT - HKHTN
25
<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
L p trình và Thi t k Web 2 – Bài 6: K t bu c d li u (DataBinding)
Bi u th c k t bu c d li u
Thu c tính Thu c tính đ n đ n
VD: <%# custID %>
T p h p
VD: <asp:ListBox id="List1“ datasource='<%# myArray %>‘
runat="server">
Bi u th c
VD: <%# (cst.FirstName + " " + cst.LastName )%>
K t qu c a vi c g i ph ng th c
K t qu c a vi c g i ph ng th c
L p trình và Thi t k Web 2 – Bài 6: K t bu c d li u (DataBinding)
Bi u th c k t bu c d li u
Bi u th c k t bu c d li u – – Ví d Ví d
<body>
<form id="form1" runat="server">
i
<div>
<asp:DropDownList ID="StateList" runat="server" AutoPostBack="True">
<asp:ListItem>IN</asp:ListItem>
<asp:ListItem>KS</asp:ListItem>
<asp:ListItem>MD</asp:ListItem>
<asp:ListItem>MI</asp:ListItem>
<asp:ListItem>OR</asp:ListItem>
<asp:ListItem>UT</asp:ListItem>
</asp:DropDownList>
Selected State:
<asp:Label ID="Label1"
t t ' %# St t Li t S l t dIt T t % ' text='<%# StateList.SelectedItem.Text %>' runat="server" />
</div>
</form>
</b d >
</body> public partial class _Default : System.Web.UI.Page
Trang 8N i d
N i dung
K t bu c d K t bu c d li u li u
DataSource Control
DataBound Control
Bi u th c k t bu c d li u
Tham sô hóa câu truy v n
© 2009 Khoa CNTT - HKHTN
29
Th ô ô hó hó â â tt Tham
Tham s sô ô hó hóa a câu câu truy truy v v n n
S S d ng d ng đ i v i các đ i v i các câu truy v n có câu truy v n có đi u ki n ho c c n đi u ki n ho c c n
nh n vào gia tr – Select * from Table Where …
– Insert into Table Values( … ) – Delete Table Where
– Delete Table Where …
– Update Table Set … Where …
Cách th c hi n
1 Tham sô hóa câu truy v n SQL cho DataSource control
© 2009 Khoa CNTT - HKHTN
30
L p trình và Thi t k Web 2 – Bài 6: K t bu c d li u (DataBinding)
B c c 1 1 – – Tham Tham s s hóa hóa câu câu truy truy v n v n SQL SQL
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)
VALUES( ?, ?, ? )
L p trình và Thi t k Web 2 – Bài 6: K t bu c d li u (DataBinding)
B c c 2 2 – – nh nh ngh ngh a a nhó nhóm m tham tham s sô ô
Các nhóm tham sô t Các nhóm tham sô t ng ng ng v i câu truy v n ng v i câu truy v n – <SelectParameters> </SelectParameters>
<InsertParameters > </InsertParameters >
– <InsertParameters > </InsertParameters >
– <DeleteParameters> </DeleteParameters>
– <UpdateParameters> </UpdateParameters>
Trang 9B 3 h h ii tt h h th th ô
B c c 3 3 – – nh nh ngh ngh a a ngu ngu n n gia gia tr tr cho cho tham tham s sô ô
Name,
DBType, Type, DefaultValue, ConvertEmptyStringToNull, Direction
<asp:Parameter> Name
<asp:ControlParameter> ControlID, PropertyName
<asp:FormParameter> FormField
<asp:QueryStringParameter> QueryStringField
<asp:CookieParameter> CookieName
<asp:SessionParameter> SessionField
© 2009 Khoa CNTT - HKHTN
33
Ví d
<asp:AccessDataSource ID="AccessDataSourceCategory" runat="server"
ConflictDetection="CompareAllValues"
DataFile="~/App_Data/Products.mdb"
SelectCommand="SELECT * FROM [Categories]“
SelectCommand SELECT FROM [Categories]
[CategoryId] = ? AND [Name] = ?"
Old l t tSt i " i i l {0}"
OldValuesParameterFormatString="original_{0}" >
<UpdateParameters>
<asp:Parameter Name="Name" Type="String" /> 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
L p trình và Thi t k Web 2 – Bài 6: K t bu c d li u (DataBinding)
S
S ki ki n n c c a a DataSource DataSource Control Control
Seleting/Inserting/Deleting/Updating S ki n tr c khi th c hi n thao tác
select/insert/delete/update Selected/Inserted/Deleted/Updated S ki n sau khi th c hi n thao tác
select/insert/delete/update
protected void AccessDataSourceCategory_Inserting(object sender,
SqlDataSourceStatusEventArgsq g e)
{
// H y bo thao tác Insert
if ([ i u ki n không th a])
e.Cancel = true;
L p trình và Thi t k Web 2 – Bài 6: K t bu c d li u (DataBinding)
Ví d
protected void AccessDataSourceCategory_Inserted (object sender, SqlDataSourceStatusEventArgs e )
{
// Ki m tra n u có l i phát sinh trong quá trình
th c hi n insert (ví d trùng khóa) thi xu t thông báo l i
Exception ex = e.Exception; p p ;
if (ex != null) {
e.ExceptionHandled = true;
LabelMessage.Text = ex.Message;
Trang 10T k t
T ng
T ng k t k t
DataSource Control
– Tham sô hóa câu truy v n
– X ly s ki n
DataBound Control
– Paging, Sorting
– Edit Item Template
– Simple Databinding
– Custom Databinding g
© 2009 Khoa CNTT - HKHTN
37