Chương 3 : Master Page, CSS, User Control
3.2. Web User Control
Web User Control là điều khiển do người dùng tự định nghĩa riêng dùng để chức năng hoá (functionality) một control mà không được cung cấp sẵn trong ASP.NET. Ta có thể design và xây dựng giống như một Web Form.
3.2.1 Tạo một Web User Control
Để tạo một Web User ta thực hiện như sau:
1. Trong Solution Explorer, click phải chuột vào Solution chọn Add New Item. 2. Trong hộp thoại Add New Item, chọn Web User Control
3. Nhập vào ô Name tên của tập tin Web User Control. 4. Chọn ngôn ngữ (VB.NET/C#)
28
3.2.2 Sử dụng Web User Control
Kéo thả Web User Control từ Solution Explorer vào trang Web đang thiết kế (chẳng hạn Master Page, Web Form, …)
Chương 4: Các đối tượng trong ASP.NET 4.1. ViewState 4.1. ViewState
Lưu thông tin của mỗi WebForm do Server quản lý, chứa thông tin của tất cả các người dùng trong trang. Khi trả về cho trình khách, ViewState được trình bày dưới dạng thẻ hidden và
có giá trị được mã hóa. Có thể vô hiệu hóa hay cho phép viewstate bằng cách sử dụng thuộc tính EnableViewState trong từng thẻ hay trong trang cấu hình của ứng dụng.
Ví dụ
protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack)
ViewState["dem"] = 1; else
ViewState["dem"] = (int)ViewState["dem"]+1; Label1.Text = "lần load " +ViewState["dem"]; }
4.2. Response
HttpResponse được dùng để chuyển dữ liệu từ Server về Client
Gởi tất cả thông tin xử lý cho các client, chúng ta có thể sử dụng đối tượng này để giao tiếp với người dùng.
Phương thức
Write: xuất thông tin dạng chuỗi ra trang web, khơng thể qui định vị trí x́t. Redirect: chuyển sang địa chỉ khác.
WriteFile: ghi luồng dữ liệu ra tập tin. Clear, end, flush…
Ví dụ
Response.write (str) Response.write (“str”)
Response.Redirect("abc.aspx")
4.3. Request
HttpRequest được dùng để chuyển dữ liệu từ Client về Server.
Nhận tất cả giá trị mà trình duyệt của client gởi đến server thông qua một yêu cầu HTTP request.
30
Ví dụ 1
<asp:HyperLink ID="HyperLink1" runat="server">HyperLink</asp:HyperLink> protected void Page_Load(object sender, EventArgs e)
{
HyperLink1.NavigateUrl = "a.aspx?x=111&y=222";
}
protected void Page_Load(object sender, EventArgs e) { string i; i = Request.QueryString.Get ("x") ; Response.Write(i+"<br>"); i = Request.QueryString.Get("y"); Response.Write(i); } Ví dụ 2 Response.Write(Request.Browser.Browser + "<br>"); Response.Write(Request.Browser.Version + "<br>"); Response.Write(Request.Browser.Platform + "<br>"); Response.Write(Request.Browser.JavaScript + "<br>"); 4.4. Application
Application được dùng để quản lý tất cả các thông tin của 1 website. Một biến nếu được
khai báo trong 1 trang web, nó sẽ bị hủy ngay khi Server xử lý xong trang này. Để có thể khai báo các biến sử dụng cho nhiều trang hay nhiều lần xử lý trang có thể sử dụng đối tượng
Application. Dữ liệu lưu trong Application sẽ được chia sẽ cho tòan bộ ứng dụng, tòan
bộ người dùng và có thể tồn tại trong cả chu trình sống của website.
4.5. Session
Session được dùng để lưu trữ các thông tin dùng cho một phiên làm việc của một người
dùng. Các biến được lưu trữ trong đối tượng này sẽ không bị hủy khi người dùng chuyển từ trang này sang trang khác. Lưu các thông tin riêng biệt cho từng phiên làm việc. Khi người dùng yêu cầu một trang web từ một ứng dụng, Web server tự động tạo ra một đối tượng
đến Web server sau khoảng thời gian timeout. Dữ liệu lưu trong Session sẽ được chia sẽ cho tòan bộ ứng dụng của 1 người dùng.
Thuộc tính TimeOut: đặt thời gian hết hạn (tính bằng phút, mặc định là 20). Phương thức Abandon: hủy Session hiện hành ngay lập tức.
Tập tin global.asax:
Tập tin này được dùng khi cần khai báo và viết các xử lý cho các sự kiện của biến
Application, Session.
<%@ Application Language="C#" %>
<script runat="server">
void Application_Start(object sender, EventArgs e) {
// Code that runs on application startup }
void Application_End(object sender, EventArgs e) {
// Code that runs on application shutdown }
void Session_Start(object sender, EventArgs e) {
// Code that runs when a new session is started }
void Session_End(object sender, EventArgs e) {
// Code that runs when a session ends.
}
</script>
4.6. Cookies
Cookies là đối tượng mà Server dùng để lưu thông tin người dùng ngay tại máy Client dưới dạng tập tin. Ví dụ if (Request.Browser.Cookies == true) { if (Request.Cookies["LastVisit"] == null) {
HttpCookie cookie = new HttpCookie("LastVisit", DateTime.Now.ToString());
cookie.Expires = DateTime.Now.AddDays(1); Response.Cookies.Add(cookie);
Label2 .Text = "Đây là lần đầu tiên bạn truy cập website này"; }
32
{
HttpCookie cookie = Request.Cookies["LastVisit"];
Label2.Text = "Lần cuối bạn truy cập là" + cookie.Value;
Response.Cookies["LastVisit"].Value = DateTime.Now.ToString(); Response.Cookies["LastVisit"].Expires = DateTime.Now.AddDays(1); } } else {
Label2.Text = "Trình duyệt khơng hỗ trợ cookie"; }
4.7. Server
Đối tượng Server thuộc lớp HttpServerUtility cung cấp các phương thức dùng cho việc xử lý các yêu cầu từ phía Server.
* Các thuộc tính
STT Tên thuộc tính Mơ tả Ví dụ
1
MachineName
Trả về tên của máy tính server
Lấy tên của máy tính server:
string sComputerName;
sComputerName = Server.MachineName;
2
ScriptTimeout
Gán hoặc trả về thời gian tối đa nhận yêu cầu (request) từ client (tính bằng giây)
Đặt giá trị thời gian tối đa nhận yêu cầu từ client là 60 giây Server. ScriptTimeout = 60; * Các phương thức quan trọng STT Tên phương thức Mô tả Ví dụ 1 MapPath Trả về đường dẫn vật lý của thư mục ảo (virtual directory) trên máy chủ web
Lấy đường dẫn vật lý của thư mục ảo MyWebSite trên máy chủ web:
String FilePath; FilePath =
2
UrlEncode
Mã hoá chuỗi địa chỉ URL dùng cho việc truyền từ máy chủ Web đến client thơng qua giao thức HTTP.
Ví dụ minh hoạ việc mã hoá chuỗi địa chỉ URL trước khi gửi chuỗi địa chỉ này cho trình duyệt web ở client. Chẳng hạn, MyURL được mã hoá thành "http%3a%2f%2fwww.abc.com%2far ticles.aspx%3ftitle+%3d+ASP.NE T+Examples" String MyURL; MyURL = "http://www.abc.com/articles.a spx?title = ASP.NET Examples"; Response.Write( "<A HREF = " + Server.UrlEncode(MyURL) + "> ASP.NET Examples <br>" );
3
UrlDecode
Giải mã chuỗi được mã hoá từ giao thức HTTP và gửi cho server bằng địa chỉ URL.
Ví dụ minh hoạ việc giải mã chuỗi
EncodedString (được nhận trong địa
chỉ URL) sang chuỗi
DecodedString String DecodedString = Server.UrlDecode(EncodedString ); 4 Transfer
Ngừng thực thi trang web hiện hành và bắt đầu thực thi (mở) một trang web mới.
Có chức năng tương tự như: Response.Redirect.
Tuy nhiên,
Server.Transfer chỉ
dùng để mở 1 trang web mới trong cùng website với trang web hiện tại.
Mở trang Index.aspx
34
4.8. Exception
- Exception là lớp đối tượng dùng để bẩy lỗi trong suốt quá trình thực thi ứng dụng
(Windows, Web).
- Khi một lỗi xuất hiện trong khi thực thi ứng dụng, thì hệ thống cũng như ứng dụng đang thực thi sẽ thông báo thông tin về lỗi thông qua Exception.
- Exception thường kết hợp với lệnh try…catch - Thuộc tính quan trọng:
+ Message: Cho biết mơ tả thơng tin về lỗi.
Ví dụ: Xây dựng trang web tính bình phương của 1 số ngun.
Trang .aspx:
<asp:Label ID="Label1" runat="server" Text="n:"></asp:Label> <asp:TextBox ID="txt_n" runat="server"></asp:TextBox><br />
<asp:Button ID="btn_TinhBinhPhuong" runat="server" Text="Bình phương" OnClick="btn_TinhBinhPhuong_Click" /><br />
<br />
<asp:Label ID="lb_KetQua" runat="server"></asp:Label></div>
Trang .aspx.cs
protected void btn_TinhBinhPhuong_Click(object sender, EventArgs e) { string s; int n; int kq; try { s = txt_n.Text;
//chuyển từ chuỗi sang số nguyên n = int.Parse(s);
//bình phương kq = n * n;
//xuất kết quả
lb_KetQua.Text = kq.ToString(); }
catch (Exception ex) {
//Nếu xảy ra lỗi thì xuất thơng báo lỗi lb_KetQua.Text = ex.Message;
} }
36
Chương 5: Kết nối dữ liệu với ADO.NET 5.1. Giới thiệu 5.1. Giới thiệu
Đối tượng ADO.NET được thiết kế như một công nghệ truy xuất dữ liệu không kết nối và phân phối dựa trên chuẩn XML, tăng tốc độ truy cập và thao tác dữ liệu trong môi trường đa lớp (N-Tier). Hai thành phần chính là đối tượng DataSet và .NET Provider.
ADO.NET chia làm hai loại: lớp kết nối Connected Layer và lớp không kết nối Disconnected Layer, hai lớp này được sử dụng song song trong cùng ứng dụng, thao tác trên CSDL như SQL Server, My SQL, MS Access, Oracle và cơ sở dữ liệu phân cấp khác.
Khi muốn sử dụng các đối tượng này, tùy vào loại nguồn dữ liệu cần khai báo: using System.Data.OleDb;
using System.Data.SqlClient;
Trong phần này chúng ta sẽ làm các ví dụ trên bảng dữ liệu
5.2. Các đối tượng trong ADO.NET
5.2.1. Connection
Thiết lập kết nối giữa ứng dụng với nguồn dữ liệu
Ví dụ 1
string ChuoiKetNoi;
ChuoiKetNoi = "provider=microsoft.jet.oledb.4.0;Data Source=" + _ Server.MapPath("App_Data\\db1.mdb");
OleDbConnection c =new OleDbConnection (ChuoiKetNoi); c.Open ();
Ví dụ 2
string ChuoiKetNoi;
ChuoiKetNoi = "server=localhost;UID=;PWD=;database=Sach;Integrated
Security=True;";
SqlConnection c =new SqlConnection (ChuoiKetNoi ); c.Open ();
5.2.2. Command
Thực thi các câu lệnh SQL hay Stored Procedure …
5.2.2.1 Thuộc tính
Connection: chứa đối tượng kết nối CommandText: chứa câu lệnh SQL Parameters: tập hợp các tham số
5.2.2.2 Phương thức
ExecuteReader: trả về đối tượng DataReader, đọc dữ liệu từng
dòng trực tiếp từ nguồn.
ExecuteScalar: thi hành câu truy vấn và chỉ trả về 1 giá trị của cột
đầu tiên của dòng đầu tiên.
ExecuteNonQuery: gọi thi hành các câu truy vấn Insert, Update,
Delete và trả về số dịng chịu tác động (nếu khơng có thì trả về -1) hoặc gọi thi hành các Stored Procedure không có dữ liệu trả về
nhưng có thể có các tham số đầu ra.
Ví dụ
string ChuoiKetNoi;
ChuoiKetNoi = "provider=microsoft.jet.oledb.4.0;Data Source=" + _ Server.MapPath("App_Data\\db1.mdb");
OleDbConnection c =new OleDbConnection (ChuoiKetNoi ); c.Open ();
string ChuoiTruyVan;
ChuoiTruyVan = "select count(*) from ThanhVien"; OleDbCommand m = new OleDbCommand();
m.Connection = c; m.CommandText = ChuoiTruyVan; int n; n = (int)m.ExecuteScalar(); Response.Write("số dòng dữ liệu:" + n); 5.2.3. DataReader
Là lớp chỉ đọc và dữ liệu đọc theo một chiều. Tiết kiệm bộ nhớ vì tại một thời điểm chỉ lưu trữ một mẫu tin. Phương thức Read dùng đọc mẫu tin, nó tự động chuyển đến mẫu tin kế tiếp cho đến khi không cịn mẫu tin nào, khơng có khái niệm định hướng EOF/BOF/Next/Previos…
Thường được dùng để hiển thị dữ liệu ra màn hình 1 lần, kiểm tra dữ liệu có tồn tại hay khơng.
Ví dụ 1
string ChuoiKetNoi;
ChuoiKetNoi = "provider=microsoft.jet.oledb.4.0;Data Source=" + Server.MapPath("App_Data\\db1.mdb");
OleDbConnection c =new OleDbConnection (ChuoiKetNoi ); c.Open ();
string ChuoiTruyVan;
ChuoiTruyVan="select * from ThanhVien"; OleDbCommand m=new OleDbCommand(); m.Connection =c; m.CommandText =ChuoiTruyVan ; OleDbDataReader d; d=m.ExecuteReader(); while (d.Read()) { Response.Write("<br>Tên: "); Response.Write(d["Ten"].ToString ()); } d.Close(); Ví dụ 2
38
string ChuoiKetNoi;
ChuoiKetNoi = "server=localhost;UID=;PWD=;database=Sach;Integrated
Security=True;";
SqlConnection c =new SqlConnection (ChuoiKetNoi ); c.Open ();
string ChuoiTruyVan;
ChuoiTruyVan="select * from NhaXuatBan"; SqlCommand m=new SqlCommand();
m.Connection =c; m.CommandText =ChuoiTruyVan ; SqlDataReader d; d=m.ExecuteReader(); while (d.Read()) { Response.Write("<br>Tên: "); Response.Write(d["TenNXB"].ToString ()); } d.Close();
Ví dụ 1 truy xuất dữ liệu Access, ví dụ 2 truy xuất dữ liệu SQLServer, so sánh sự khác nhau?
5.2.4. DataAdapter
Kết nối nguồn dữ liệu và điền dữ liệu vào bộ nhớ thường trú DataSet.
Thuộc tính: SelectCommand, InsertCommand, UpdateCommand, DeleteCommand tương ứng các phát biểu SQL dùng để thao tác dữ liệu trên DataSet.
Phương thức Fill: thực thi SelectCommand và điền dữ liệu vào đối tượng DataSet.
Phương thức Update: gọi đối tượng Command để thực thi InsertCommand, UpdateCommand, DeleteCommand.
5.2.5. DataSet
DataSet được xem như ảnh của một nguồn dữ liệu thu nhỏ có khả năng hoạt động độc lập khi ngắt kết nối. DataSet có thể chứa các bảng (DataTable), view (DataView), quan hệ (Relations), ràng buộc (Contraints) như một Database thật sự.
5.2.6. DataTable 5.2.7. DataView
5.3. Kết nối dữ liệu trong ASP.NET
protected void Lưu_Click(object sender, EventArgs e) {
string ChuoiKetNoi;
ChuoiKetNoi = "provider=microsoft.jet.oledb.4.0;Data Source=" + Server.MapPath("App_Data\\db1.mdb");
OleDbConnection c = new OleDbConnection(ChuoiKetNoi); c.Open();
string ChuoiTruyVan;
OleDbCommand m = new OleDbCommand(); m.Connection = c;
m.Parameters.Add("a1",t1.Text); m.Parameters.Add("a2",t2.Text); m.Parameters.Add("a3",t4.Text); if (t5.Text == "")
ChuoiTruyVan = "insert into ThanhVien(Ten,MatKhau,Email)
values(a1,a2,a3)";
else {
m.Parameters.Add("a4", t5.Text); ChuoiTruyVan = "insert into
ThanhVien(Ten,MatKhau,Email,SoDangKy) values(a1,a2,a3,a4)"; } m.CommandText = ChuoiTruyVan; try { m.ExecuteNonQuery(); c.Close(); Response.Redirect("KetNoiDuLieuAccess.aspx"); }
catch (Exception ex) {
Response.Write("THÔNG BÁO LỖI" + ex.Message); }
c.Close(); }
LƯU Ý: TRÙNG KHĨA CHÍNH 5.3.2. Xố
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) {
string ChuoiKetNoi;
ChuoiKetNoi = "provider=microsoft.jet.oledb.4.0;Data Source=" + Server.MapPath("App_Data\\db1.mdb");
40
c.Open();
string ChuoiTruyVan;
ChuoiTruyVan = "select * from ThanhVien"; OleDbCommand m = new OleDbCommand(); m.Connection = c;
m.CommandText = ChuoiTruyVan;
OleDbDataAdapter a = new OleDbDataAdapter(); a.SelectCommand = m;
DataSet d = new DataSet(); a.Fill(d); DropDownList1.DataTextField = "Ten"; DropDownList1.DataValueField = "Ten"; DropDownList1.DataSource = d; DropDownList1.DataBind(); c.Close(); } }
protected void Xoa_Click(object sender, EventArgs e)
{
string t=DropDownList1.SelectedValue; string ChuoiKetNoi;
ChuoiKetNoi = "provider=microsoft.jet.oledb.4.0;Data Source=" + Server.MapPath("App_Data\\db1.mdb");
OleDbConnection c = new OleDbConnection(ChuoiKetNoi); c.Open();
string ChuoiTruyVan;
ChuoiTruyVan = "delete * from ThanhVien where Ten=a1"; OleDbCommand m = new OleDbCommand();
m.Connection = c; m.Parameters.Add("a1", t); m.CommandText = ChuoiTruyVan; try { m.ExecuteNonQuery(); c.Close(); Response.Redirect("KetNoiDuLieuAccess.aspx"); }
catch (Exception ex) {
Response.Write("THÔNG BÁO LỖI" + ex.Message); }
c.Close(); }
protected void HienThi_Click(object sender, EventArgs e) { Lưu.Visible = false; CapNhat.Visible = true; t1.Enabled = false; string t = DropDownList1.SelectedValue; string ChuoiKetNoi;
ChuoiKetNoi = "provider=microsoft.jet.oledb.4.0;Data Source=" + Server.MapPath("App_Data\\db1.mdb");
OleDbConnection c = new OleDbConnection(ChuoiKetNoi); c.Open();
string ChuoiTruyVan;
ChuoiTruyVan = "select * from ThanhVien where Ten=a1"; OleDbCommand m = new OleDbCommand();
m.Connection = c; m.Parameters.Add("a1", t); m.CommandText = ChuoiTruyVan; OleDbDataReader d; d = m.ExecuteReader(); while (d.Read()) { t1.Text =d["Ten"].ToString(); t4.Text = d["Email"].ToString(); t5.Text = d["SoDangKy"].ToString(); } d.Close(); c.Close(); }
protected void CapNhat_Click(object sender, EventArgs e) {
string ChuoiKetNoi;
ChuoiKetNoi = "provider=microsoft.jet.oledb.4.0;Data Source=" + Server.MapPath("App_Data\\db1.mdb");
OleDbConnection c = new OleDbConnection(ChuoiKetNoi); c.Open();
string ChuoiTruyVan;
ChuoiTruyVan = "update ThanhVien set Email=a1,SoDangKy=a2 where
Ten=a3";
OleDbCommand m = new OleDbCommand(); m.Connection = c; m.Parameters.Add("a1", t4.Text); m.Parameters.Add("a2", t5.Text); m.Parameters.Add("a3", t1.Text); m.CommandText = ChuoiTruyVan; try { m.ExecuteNonQuery(); c.Close(); Response.Redirect("KetNoiDuLieuAccess.aspx"); }
42
catch (Exception ex) {
Response.Write("THÔNG BÁO LỖI" + ex.Message); }
c.Close(); }
Chương 6: Điều khiển liên kết dữ liệu 6.1. Giới thiệu 6.1. Giới thiệu
6.2. GridView
Cho phép hiển thị dữ liệu dạng bảng, kết quả xuất ra trình duyệt là thẻ <table>. Có thể: phân trang; sắp xếp từng cột dữ liệu; chọn, xóa, cập nhật từng dòng dữ liệu.
Tạo 1 GridView: Toolbox->nhấp đôi chuột vào GridView Tạo nguồn dữ liệu cho GridView
Bước 3: Chọn AccessData để kết nối với file dữ liệu Access->OK Bước 4: Đường dẫn đến file dữ liệu->Next
Bước 1: nhấp chuột
44
Bước 5: Chọn cách lấy dữ liệu ->Next
Bước 6: Có thể Kiểm tra thử dữ liệu lấy được->Finish
Hiệu chỉnh cách hiển thị dữ liệu:
Định dạng hình thức: chọn Auto Format… hoặc Properties->Styles Định dạng nội dung: Chọn Edit Columns…
Thuộc tính DataFormatString: (Lưu ý thuộc tính HTMLEncode) Ví dụ: DataFormatString="{0:dd/MM/yy}"
Sắp xếp dữ liệu theo cột
Gán thuộc tính của GridView: AllowSorting=True
Gán thuộc tính của các cột muốn sắp xếp: SortExpression=”TênCột”
Phân trang dữ liệu
Gán thuộc tính của GridView: AllowPaging=True, PageSize=”số lượng mẫu tin trong 1 trang”
Thẻ PagerSettings: định dạng hình thức hiển thị Position=Top/Bottom/TopandBottom
Mode=Numeric/NumericFirstLast/NextPrevious/NextPreviousFirstLast PageButtonCount =”số trang hiển thị tối đa, nếu số trang nhiều hơn số này thì sẽ hiển thị từng phần”
6.3. DataList
DataList control là điều khiển dùng để hiển thị dữ liệu trên Web, khi sử dụng DataList control chúng ta phải tự thiết kế cách thức hiển thị dữ liệu.
46
6.3.1. Các thành phần của DataList
<html>
<body>
<form runat="server">
<asp:DataList id="myDataList" runat="server">
<HeaderTemplate> ... </HeaderTemplate> <ItemTemplate> ... </ItemTemplate> <FooterTemplate> ... </FooterTemplate> </asp:DataList> </form> </body> </html>
6.3.2. Tạo điều khiển DataList
6.3.3. Tạo nguồn dữ liệu cho DataList dùng AccessDataSource
Bước 1: nhấp chuột Bước 2: chọn
48
Bước 3: Chọn AccessData để kết nối với file dữ liệu Access->OK Bước 4: Đường dẫn đến file dữ liệu->Next
Bước 5: Chọn cách lấy dữ liệu ->Next
Bước 6: Có thể Kiểm tra thử dữ liệu lấy được->Finish
Thiết kế giao diện trong vùng ItemTemplate
6.3.5. Liên kết dữ liệu cho các thành phần trong DataList
50
Thực hiện tương tự như trên đối với Mật khẩu, email, số đăng ký.
<asp:DataList ID="DataList1" runat="server" DataSourceID="AccessDataSource1"> <ItemTemplate> <br /> <table border="1"> <tr> <td style="width: 86px">
<asp:Label ID="Label1" runat="server" Text="Tên"></asp:Label></td> <td style="width: 100px">
<asp:Label ID="lb_Ten" runat="server"
Text='<%# Eval("ten") %>'></asp:Label></td>
</tr> <tr>
<td style="width: 86px">
<asp:Label ID="Label2" runat="server" Text="Mật khẩu"> </asp:Label></td>
<td style="width: 100px">
<asp:Label ID="lb_MatKhau" runat="server"
Text='<%# Eval("matkhau") %>'></asp:Label></td>
</tr> <tr>
<td style="width: 86px; height: 21px"> <asp:Label ID="Label3" runat="server" Text "Email"></asp:Label></td> <td style="width: 100px; height: 21px">
<asp:Label ID="lb_Email" runat="server"
Text='<%# Eval("email") %>'></asp:Label></td>
</tr> <tr>
<td style="width: 86px">
<asp:Label ID="Label4" runat="server" Text="Số đăng ký"></asp:Label></td> <td style="width: 100px">
<asp:Label ID="lb_SoDangKy" runat="server"
Text='<%# Eval("sodangky") %>'></asp:Label></td>
</tr> </table>
</ItemTemplate> </asp:DataList>
<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/db1.mdb"
SelectCommand="SELECT `ten`, `matkhau`, `email`, `sodangky` FROM `ThanhVien`"
UpdateCommand="UPDATE `ThanhVien` SET `matkhau` = ?, `email` = ?, `sodangky` = ? WHERE `ten` = ?">
<UpdateParameters>
<asp:Parameter Name="matkhau" Type="String" /> <asp:Parameter Name="email" Type="String" /> <asp:Parameter Name="sodangky" Type="Int32" /> <asp:Parameter Name="ten" Type="String" /> </UpdateParameters>
52
Kết quả:
6.3.6. Lập trình sử dụng DataList
Ví dụ:
Xây dựng trang web nghe nhạc đơn giản với cơ sở dữ liệu cho sẵn Hãy thực hiện các yêu cầu sau sử dụng DataList control:
a) Hiển thị danh sách tất cả bài hát (DSBaiHat.aspx) b) Hiển thị chi tiết thông tin bài hát (CTBaiHat.aspx) Cơ sở dữ liệu:
a) Hiển thị danh sách tất cả bài hát (DSBaiHat.aspx)