CHƯƠNG 6: HƯỚNG DẪN THỰC HÀNH
Bài 1: Xây dựng ứng dụng WebCalculator
1. Tạo một Web site
Từ Menu chọn File - New - Web site
o Template : ASP.NET Web site
o Location : File System
o Language : Visual C
71 trang |
Chia sẻ: phuongt97 | Lượt xem: 420 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Giáo trình Tin học thực hành lập trình web, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
= "Provider = Microsoft.Jet.OLEDB.4.0;";
strconn += "Data Source=" + Server.MapPath("~/App_Data/tintuc.mdb");
OleDbConnection dbconn = new OleDbConnection(strconn);
dbconn.Open();
string strquery = "Select * from Bantin where linhvuc = '" + CboLinhvuc.SelectedValue
+"'";
OleDbDataAdapter adap = new OleDbDataAdapter(strquery, dbconn);
dbconn.Close();
DataTable dt = new DataTable();
adap.Fill(dt);
gvBantin.DataSource = dt;
gvBantin.DataBind();
}
ii. Sự kiện Click của nút Tìm
//Khi nhấn nút Tìm thì gọi hàm BindGrid
protected void cmdTim_Click(object sender, EventArgs e)
{
BindGrid();
}
iii. Phân trang
protected void gvBantin_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gvBantin.EditIndex = e.NewPageIndex;
BindGrid();
}
Dzoaõn Thanh 60
LẬP TRÌNH WEB
iv. Khi nhấn link Delete của tin nào thì sẽ xóa tin đó.
// Khi nhấn vào Delete trên lưới thì Xóa bản tin
protected void gvBantin_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
//Chọn Properties và đặt thuộc tính DataKeyNames của lưới là tên của trường chứa khóa
chính
//Ví dụ : Mabantin
//Lấy giá trị khóa của dòng khi chọn delete trên dòng đó
Object objKey = gvBantin.DataKeys[e.RowIndex].Value;
string strconn = "Provider = Microsoft.Jet.OLEDB.4.0;";
strconn += "Data Source=" + Server.MapPath("~/App_Data/tintuc.mdb");
OleDbConnection dbconn = new OleDbConnection(strconn);
dbconn.Open();
string strquery = "delete from Bantin where mabantin ='" + objKey + "'";
OleDbCommand cmd = new OleDbCommand(strquery, dbconn);
cmd.ExecuteNonQuery();
dbconn.Close();
gvBantin.EditIndex = -1;
BindGrid();
}
v. Khi nhấn Edit của một tin, chuyển tới trang upload.aspx để chỉnh sửa nội dung của tin đó.
protected void gvBantin_RowEditing(object sender, GridViewEditEventArgs e)
{
//Lấy giá trị khóa của dòng khi chọn Edit trên dòng đó
Object objKey = this.gvBantin.DataKeys[e.NewEditIndex].Value;
//Gửi Khóa của tin đó tới trang update.aspx
Response.Redirect("~/webmaster/update.aspx?id=" + objKey,false);
}
F5 > Chạy chương trình >> Đăng nhập >> Cập nhật bản tin
Dzoaõn Thanh 61
LẬP TRÌNH WEB
6. Tạo trang Chỉnh sửa, cập nhật một bản tin (update.aspx)
o Click phải chuột lên thư mục Webmaster chọn – Add new item
• Template :WebFrom
• Name : update.aspx
• Language : Visual C#
• Check vào Select MasterPage
o Trang update.aspx được thiết kế như sau:
- DropdownList Lĩnh vực
- TextBox tiêu đề
- Control Free TextBox Nội dung tóm tắt
- Control Free TextBox Nội dung
- Image Hình ảnh để hiển thị hình hiện tại
- Lable Hìn ảnh hiển thị tên hình hiện tại
- FileUpload để thay đổi hình khác
- TextBox chú thích hình
Dzoaõn Thanh 62
LẬP TRÌNH WEB
Hoạt động :
i. Nhận Id (thuộc tính Khóa) từ trang Edit_Bantin.aspx, kết nối database lấy dữ liệu hiển thị
lên các control
ii. Khi nhấn nút lưu, sẽ update dữ liệu trên các control xuống database, và upload hình khác
vào thư mục Upload nếu như thay đổi hình
Cài đặt:
i. Khi trang web được load lên lần đầu, dùng đối tượng Request để đón nhận giá trị từ trang
khác gởi tới
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string strKey = "";
// kiểm tra giá trị từ trang Edit_Bantin.aspx chuyển tới
Dzoaõn Thanh 63
LẬP TRÌNH WEB
if (Request.Params["id"] != null)
{
strKey = Request.Params["id"].ToString(); // Gán strKey = giá trị nhận được
cboLinhvuc.DataTextField = "Tenlinhvuc";
cboLinhvuc.DataValueField = "Malinhvuc";
GetLinhvuc(); // Gọi hàm Load dữ liệu lên Cbolinhvuc
LoadData(strKey); // Gọi hàm Load dữ liệu lên cho các control khi đã nhận được khóa
}
}
}
protected void GetLinhvuc()
{
string strconn = "Provider = Microsoft.Jet.OLEDB.4.0;";
strconn += "Data Source=" + Server.MapPath("~/App_Data/tintuc.mdb");
OleDbConnection dbconn = new OleDbConnection(strconn);
dbconn.Open();
string strquery = "Select * from Linhvuc";
OleDbDataAdapter adap = new OleDbDataAdapter(strquery, dbconn);
dbconn.Close();
DataTable dt = new DataTable();
adap.Fill(dt);
cboLinhvuc.DataSource = dt;
cboLinhvuc.DataBind();
}
private void LoadData(string key)
{
string strconn = "Provider = Microsoft.Jet.OLEDB.4.0;";
strconn += "Data Source=" + Server.MapPath("~/App_Data/tintuc.mdb");
OleDbConnection dbconn = new OleDbConnection(strconn);
dbconn.Open();
string strquery = "Select * from Bantin where mabantin = '" + key + "'";
OleDbDataAdapter adap = new OleDbDataAdapter(strquery, dbconn);
dbconn.Close();
DataTable dt = new DataTable();
adap.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
txtTieude.Text = dr["tieude"].ToString();
txtNoidungtomtat.Text = dr["Noidungtomtat"].ToString();
txtNoidung.Text = dr["Noidung"].ToString();
imgHinhanh.ImageUrl = "~/Upload/" + dr["Hinhanh"].ToString();
lblHinhanh.Text = dr["Hinhanh"].ToString();
txtChuthichhinh.Text = dr["Chuthichhinh"].ToString();
}
}
Dzoaõn Thanh 64
LẬP TRÌNH WEB
ii. Sau khi chỉnh sửa thông tin, nhấn nút Lưu, dữ liệu mới sẽ được cập nhật xuống database
và hình ảnh mới vào thư mục Upload (nếu có)
protected void cmdLuu_Click(object sender, EventArgs e)
{
//Gọi hàm cập nhật dữ liệu mới xuống database
SaveData();
// Gọi hàm upload hình mới vào thư mục Upload nếu có
SaveFileUpload();
}
protected void SaveFileUpload()
{
string strFileName;
if (txtFileUpload.FileName != "")
{
strFileName = Server.MapPath("~/Upload\\" + txtFileUpload.FileName);
txtFileUpload.PostedFile.SaveAs(strFileName);
}
}
private void SaveData()
{
string strKey = "";
// kiểm tra giá trị từ trang Edit_Bantin.aspx chuyển tới
if (Request.Params["id"] != null)
{
strKey = Request.Params["id"].ToString(); // Gán strKey = giá trị nhận được
}
string strconn = "Provider = Microsoft.Jet.OLEDB.4.0;";
strconn += "Data Source=" + Server.MapPath("~/App_Data/tintuc.mdb");
OleDbConnection dbconn = new OleDbConnection(strconn);
dbconn.Open();
string strquery = "Update Bantin";
strquery += " set tieude = '" + txtTieude.Text + "',";
strquery += " Noidungtomtat = '" + txtNoidungtomtat.Text + "',";
strquery += " Noidung ='" + txtNoidung.Text + "',";
strquery += " Hinhanh ='" + txtFileUpload.FileName + "',";
strquery += " Chuthichhinh ='" +txtChuthichhinh.Text + "',";
strquery += " Linhvuc ='" + cboLinhvuc.SelectedValue + "'";
strquery += " where mabantin = '" + strKey.ToString() + "'";
OleDbCommand cmd = new OleDbCommand(strquery, dbconn);
cmd.ExecuteNonQuery();
dbconn.Close();
}
F5 >> Chạy chương trình>> Đăng nhập >> Cập nhật Bản tin >> Edit một bản tin
Dzoaõn Thanh 65
LẬP TRÌNH WEB
Dzoaõn Thanh 66
LẬP TRÌNH WEB
Lập trình Internet với Cookies
Cookie thường được dùng để xác định một user. Cookie là một tập tin nhỏ mà server nhúng
vàomáy tính của user. Mỗi lần một máy tính yêu cầu một trang web với một trình duyệt, nó sẽ
gửicookie đi theo.
1. Kiểm tra trình duyệt của user có cho phép sử dụng Cookies hay không
If (Request.Browser.Cookies == true)
{
// Trình duyệt có hỗ trợ cookies
}
2. Nếu trình duyệt hỗ trợ, kiểm tra có tồn tại cookie chưa
if (Request.Cookies["name"] !=null)
{
// Tồn tại cookie khóa name
}
3. Nếu cookie chưa tồn tại
o Tạo mới cookie
HttpCookie cookie = new HttpCookie("name","abc");
Hoặc
HttpCookie cookie1 = new HttpCookie"name");
cookie.Value ="abc";
o Thiết lập thời gian tồn tại của cookie
cookie.Expires = new DateTime.Now.AddDays(30); // 30 ngày
Lưu ý: Nếu Expires là thời điểm hiện tại thì cónghĩa là xoá cookie
o Lưu cookie vào máy của user:
Response.Cookies.Add(cookie);
4. Nếu cookie đã tồn tại lấy thông tin của cookie hiển thị lên web
String s = Request.Cookies["name"].Value ;
Ứng dụng vào đề tài:
Thiết kế lại trang Login.aspx như sau:
- TextBox, Checkbox, Button, Literal và control Valadation để kiểm tra dữ liệu
Dzoaõn Thanh 67
LẬP TRÌNH WEB
Cài đặt lại trang Login.aspx như sau:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Request.Browser.Cookies) // Trình duyệt có hỗ trợ cookies hay không
{
if (Request.Cookies["user"] != null && Request.Cookies["pass"] != null)
{
HttpCookie cookie_user = new HttpCookie("user");
// Thiết lập thời gian tồn tại của cookie
cookie_user.Expires = DateTime.Now.AddDays(30); //30 ngày
// Lưu cookie vào máy của user
Response.Cookies.Add(cookie_user);
//Lấy cookie user đã tồn tại gán vào text Username
txtUsername.Text = Request.Cookies["user"].Value;
// tương tự Password
HttpCookie cookie_pass = new HttpCookie("pass");
cookie_pass.Expires = DateTime.Now.AddDays(30);
Response.Cookies.Add(cookie_pass);
txtPassword.Text = Request.Cookies["pass"].Value;
}
}
}
}
private void CheckLogin()
{
string strconn = "Provider = Microsoft.Jet.OLEDB.4.0;";
strconn += "Data Source=" + Server.MapPath("~/App_Data/tintuc.mdb");
OleDbConnection dbconn = new OleDbConnection(strconn);
string strquery = "Select * from Taikhoan";
OleDbDataAdapter adap = new OleDbDataAdapter(strquery, dbconn);
DataTable dt = new DataTable();
adap.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
Dzoaõn Thanh 68
LẬP TRÌNH WEB
if ((txtUsername.Text) == dr["id"].ToString() && txtPassword.Text ==
dr["pass"].ToString())
{
if (chkGhinho.Checked) // Nếu người dùng check vào Ghi nhớ
{
//Lưu cookie user
HttpCookie cookie_user = new HttpCookie("user", txtUsername.Text);
cookie_user.Expires = DateTime.Now.AddDays(30);
Response.Cookies.Add(cookie_user);
//Lưu cookie pass
HttpCookie cookie_pass = new HttpCookie("pass", txtPassword.Text);
cookie_pass.Expires = DateTime.Now.AddDays(30);
Response.Cookies.Add(cookie_pass);
}
Else // người dùng không check vào ghi nhớ
{
//Xóa cookie user
HttpCookie cookie_user = new HttpCookie("user", "");
cookie_user.Expires = DateTime.Now;
Response.Cookies.Add(cookie_user);
//Xóa cookie pass
HttpCookie cookie_pass = new HttpCookie("user", "");
cookie_pass.Expires = DateTime.Now;
Response.Cookies.Add(cookie_pass);
}
Session["Login"] = true;
Response.Redirect("Default.aspx", false);
return;
}
}
//Thông báo lỗi khi thông tin đăng nhập không hợp lệ
lblLoi.Text = "Invalid Account";
}
protected void cmdLogin_Click(object sender, EventArgs e)
{
CheckLogin();
}
Dzoaõn Thanh 69
LẬP TRÌNH WEB
MỤC LỤC
Chương 1: GIỚI THIỆU ASP.NET ................................................................ 1
1. Giới thiệu ASP.NET ................................................................................. 1
2. Các yếu tố đặc biệt của ASP.NET ............................................................. 1
3. Những đặc điểm mới của ASP.NET ......................................................... 4
4. Web Site trong Visual Studio.Net ............................................................. 6
5. Trình soạn mã Visual Studio.Net .............................................................. 10
6. Mô hình mã của trang ASP.NET .............................................................. 14
7. Quy trình xử lý trang ASP.NET ................................................................ 15
8. Tìm hiểu thuộc tính IsPostBack và IsCrossPagePostBack ......................... 16
9. Tìm hiểu khái niệm ViewState .................................................................. 16
10. Cấu trúc tập tin global.asax ..................................................................... 17
Chương 2: CÁC CONTROL TRONG ASP.NET........................................... 19
1. Server control ........................................................................................... 19
2. ASP.NET Server control ........................................................................... 20
2.1 Điều khiển cơ bản.............................................................................. 21
2.2 Điều khiển thông dụng ...................................................................... 22
3. Các Server control kiểm tra dữ liệu ........................................................... 29
4. Mộ số điều khiển khác .............................................................................. 36
Chương 3: CÁC ĐỐI TƯỢNG TRONG ASP.NET ....................................... 42
1. Respone .................................................................................................... 42
2. Request ..................................................................................................... 43
3. Server ....................................................................................................... 44
4. Application ............................................................................................... 45
Chương 4: ASP.NET & ADO.NET ................................................................. 47
1. Các công nghệ truy xuất dữ liệu ................................................................ 47
2. Các đối tượng của ADO.NET ................................................................... 49
3. Lưu trữ và xử lý dữ liệu ............................................................................ 55
4. SqlDataSource & AccessDataSource ........................................................ 57
Chương 5: CÁC CONTROL TRÌNH BÀY DỮ LIỆU ................................... 66
1. GridView .................................................................................................. 66
2. DetailsView & FormView ........................................................................ 81
3. DataList .................................................................................................... 83
4. Master ...................................................................................................... 85
Chương 6: HƯỚNG DẪN THỰC HÀNH ...................................................... 87
Dzoaõn Thanh 70
Các file đính kèm theo tài liệu này:
- giao_trinh_tin_hoc_thuc_hanh_lap_trinh_web.pdf