Giáo trình Tin học thực hành lập trình web

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

pdf71 trang | Chia sẻ: phuongt97 | Lượt xem: 420 | Lượt tải: 0download
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:

  • pdfgiao_trinh_tin_hoc_thuc_hanh_lap_trinh_web.pdf
Tài liệu liên quan