ASP.Net: CommandField – Edit/Delete, Update/Cancel trên GridView – Phần 2

ASP.Net: CommandField – Edit/Delete, Update/Cancel trên GridView – Phần 2

Chào mọi người để tiếp tục chương trình sau phần 1 sử dụng gridview hôm nay chúng ta sẽ làm công việc cực kỳ thú vị đó làm việc với CommandField Edit/Delete, Update/Cancel trong GridView một trong những sự kiện chính của DataGridView trong Thiết kế web ASP.Net.

Không dài dòng chúng ta sẽ tiến hành vào vấn đề chính lun! Hôm trước chúng ta đã đổ dữ liệu vào grid rồi bây giờ sẽ edit, update tại dòng đang xét.

Muốn là được điều này thì GridView bạn phải có field nào đó là DataKey để dựa vào đó để xét. Ở đây mình vẫn làm típ vi dụ ở bài Thêm xóa sửa trong ASP.Net để tiện cho mình và các bạn, do đó Key của chúng ta là Mã SV, bạn chọn vào gridview click phải chọn properties tại dòng DataKeyName như trong hình sau.

Đặt DataKeyNames cho GridView

Đặt DataKeyNames cho GridView

Qui trình Edit/Delete, Update/Cancel

Bạn sẽ hình dung ra vấn đề ta cần xử lý như sau: Giao diện sẽ có nut Edit vào Delete, Bạn bấm vào Delete thì sẽ chạy sự kiện RowDeleting. Bạn bấm vào Edit sẽ chạy sự kiện RowEditing đồng thời sẽ hiển thị hai nút, Update và Cancel nếu bấm Update thì chạy sự kiện RowUpdating nếu bấm Cancel Thì chạy sự kiện RowCancelingEdit.

Đường đi của CommandField trong GridView

Đường đi của CommandField trong GridView

Bây giờ ta thống kê được 4 sự kiện đó và tiến hành cài đặt cho 4 sự kiện đó. Bạn click vào GridView properties lên chọn qua tab Events (Dấu sấm sét trong hình). Chọn vào các sự kiện như trong hình và Enter (Nhớ là có hậu tố ing không chọn sự kiện hâu tố ed).

ASP.Net: CommandField – Edit/Delete, Update/Cancel trên GridView – Phần 2

Các sự kiện Edit Delete Update Cancel trong GridView

Bây giờ sẽ xử lý sự kiện nào dễ làm trước

Sự kiên RowEditing trên GridView

Bạn vào trong sự kiện này gõ vào đoạn mã sau:

    protected void gvSinhVien_RowEditing(object sender, GridViewEditEventArgs e)
    {
        gvSinhVien.EditIndex = e.NewEditIndex;
        load_data();
    }

Đoạn code trên khi bấm vào Edit mở ra một đối tượng edit NewEditIndex đồng thời load dữ liệu lên GridView.

Sự kiện RowCancelingEdit trên GridView

Sự kiện này khi bấm vào nút Edit mà chúng ta không Update mà Cancel thì xử lý tại đây.

    protected void gvSinhVien_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        gvSinhVien.EditIndex = -1;
        load_data();
    }
Sự kiên RowDeleting trên GridView

Hai sự kiện kia quá dễ đến đây mới khó khăn hơn 1 tí.  bạn xem đoạn code sau:

    protected void gvSinhVien_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        int id = int.Parse(gvSinhVien.DataKeys[e.RowIndex].Value.ToString());
        SqlConnection con = new SqlConnection("server=.;database=bcdonlinesv;Integrated security=true;");
        SqlCommand cmd = new SqlCommand("delete from sinhvien where masv='" + id + "'", con);
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
        load_data();
    }

Bạn thấy lúc này đã đụng đến DataKeys vì xóa thì phải xác định vị trí khóa chính.

  • e.RowIndex: Xét tại dòng đang xử lý
  • int.Parse: Chuyển về kiểu dữ liệu là int
  • ExecuteNonQuery: Thực thi truy vấn trong Command
Sự kiện RowUpdating trên GridView

Đây là sự kiện phức tạp nhất trong 4 sự kiện mà ta xét trong bài hôm nay.

    protected void gvSinhVien_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        int id = int.Parse(gvSinhVien.DataKeys[e.RowIndex].Value.ToString());
        string ten = (gvSinhVien.Rows[e.RowIndex].Cells[1].Controls[0] as TextBox).Text;
        string ngaysinh = (gvSinhVien.Rows[e.RowIndex].Cells[2].Controls[0] as TextBox).Text;
        string gioitinh = ((DropDownList)gvSinhVien.Rows[e.RowIndex].FindControl("drlGioiTinh")).SelectedValue;
        string diachi = (gvSinhVien.Rows[e.RowIndex].Cells[4].Controls[0] as TextBox).Text;
        string dt = (gvSinhVien.Rows[e.RowIndex].Cells[5].Controls[0] as TextBox).Text;
        string email = (gvSinhVien.Rows[e.RowIndex].Cells[6].Controls[0] as TextBox).Text;
        SqlConnection con = new SqlConnection("server=.;database=bcdonlinesv;Integrated security=true;");
        SqlCommand cmd = new SqlCommand("update sinhvien set tensv='" + ten + "',ngaysinh='" + ngaysinh + "',phai='" + gioitinh + "', diachi='" + diachi + "',dienthoai='" + dt + "',email='" + email + "' where masv='" + id + "'", con);
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
        gvSinhVien.EditIndex = -1;
        load_data();
    }

Giải thích: Mọi sự dữ liệu lấy được từ một cột dữ liệu trên GridView sẽ là một biến vào tùy vào ứng với field nào trong CSDL mà ta có kiểu dữ liệu cho hợp lệ.

  • Khóa chính thì là như trên ta lấy từ DataKey trên GridView.
  • Cells[vitri]: Đây là vị trí của cột đánh số thứ tự 0 – n
  • Controls[vitri]: Xét trong Cells xử lý control thứ bao nhiu cũng đánh số từ 0 – n, ở đây trong mỗi field đều có 1 control nên đánh số là 0.
  • as TextBox: Đối tương TextBox
  • FindControl: Tìm đến control có tên như khai báo
  • gvSinhVien.EditIndex = -1: Cho phép bấm Update sẽ thoát khỏi tình trạng Edit.
  • load_data(): Load lại dữ liệu sau khi update.

Kết luận: Vậy là xong phần xử lý các button Sửa, xóa … trên dòng của GridView. Trong đây còn rất nhiều việc để nói, và các bạn tìm hiểu thêm nha!

Bạn thấy bài viết này như thế nào?: 
Average: 9 (1 vote)
Ảnh của Tommy Tran

Tommy owner Express Magazine

Drupal Developer having 9+ year experience, implementation and having strong knowledge of technical specifications, workflow development. Ability to perform effectively and efficiently in team and individually. Always enthusiastic and interseted to study new technologies

  • Skype ID: tthanhthuy

Bình luận (0)

 

Add Comment

Filtered HTML

  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Các thẻ HTML được chấp nhận: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Tự động ngắt dòng và đoạn văn.

Plain text

  • No HTML tags allowed.
  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Tự động ngắt dòng và đoạn văn.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
AI đang ở đâu trên thế giới, các bài toán AI tại Tech Awards 2018

AI đang ở đâu trên thế giới, các bài toán AI tại Tech Awards 2018

Nối tiếp chương trình hội thảo là câu chuyện về trí tuệ nhân tạo. AI đang thay đổi diện mạo của thế giới với nhiều ứng dụng trong tất cả lĩnh vực.

iPad 3 có thể ra mắt vào 7/3

iPad 3 có thể ra mắt vào 7/3

Theo iMore, iPad thế hệ thứ ba có thể được giới thiệu vào ngày 7/3 sắp tới. Mốc thời gian này rất phù hợp với tin đồn trước đó về việc iPad mới ra mắt vào tuần đầu tiên của tháng 3.

Video độ nét cao quay bằng iPad mới

Video độ nét cao quay bằng iPad mới

Cùng thưởng thức đoạn video độ nét cao quay bằng camera iSight 5 megapixel ở mặt sau iPad thế hệ mới.

Công ty diệt chuột T&C

 

Diet con trung