Kiến thức

Tìm kiếm
Hỗ trợ trực tuyến
Hỗ trợ trực tuyến - toankhoa1008
Mr.Khoa - 0909 017 015
Khuyến mãi
Khuyến mãi
Đối tác
Kiến thức thiết kế
Cập nhật dữ liệu trực tiếp ngay trên gridview trong asp.net
4/25/2012 1:20:42 PM
Lần trước WEBXAULA đã giới thiệu với các bạn cách chọn xoá nhiều dòng dữ liệu trên gridview. Trong bài viết này, tôi sẽ giới thiệu với các bạn cách cập nhật dữ liệu trực tiếp ngay trên gridview
Cập nhật dữ liệu trực tiếp ngay trên gridview trong asp.net

 Trong ví dụ này, tôi sẽ cập nhật họ tên, địa chỉ, số điện thoại và trạng thái thành viên của các thành viên đã đăng ký.

 

<asp:GridView ID="DS_ThanhVien" runat="server" AutoGenerateColumns="False"
            BackColor="White" BorderColor="#336666" BorderStyle="Double" BorderWidth="3px"
            CellPadding="4" GridLines="Horizontal" Width="100%"
            onrowdatabound="DS_ThanhVien_RowDataBound"
            onrowdeleting="DS_ThanhVien_RowDeleting"
            onrowupdating="DS_ThanhVien_RowUpdating">
            <RowStyle BackColor="White" ForeColor="#333333" />
            <Columns>
                <asp:TemplateField HeaderText="Email">
                    <ItemTemplate>
                        <%# Eval("email") %>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Họ tên">
                    <ItemTemplate>
                        <asp:TextBox ID="txtHoTen" Text=<%# Eval("hoten") %> Width="90%" ToolTip=<%# Eval("hoten") %> runat="server"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Địa chỉ">
                    <ItemTemplate>
                        <asp:TextBox ID="txtDiaChi" Text=<%# Eval("diachi") %> Width="90%" ToolTip=<%# Eval("diachi") %> runat="server"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Điện thoại">
                    <ItemTemplate>
                        <asp:TextBox ID="txtDienThoai" Text=<%# Eval("dienthoai") %> Width="90%" ToolTip=<%# Eval("dienthoai") %> runat="server"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:ImageButton ID="cmdSave" CommandName="Update" ImageUrl="../hinh/tour_save_button.png" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Tình trạng">
                <ItemStyle HorizontalAlign="Center" />
                    <ItemTemplate>
                        <asp:ImageButton ID="cmdTrangThai" CommandName="Delete" ImageUrl="../hinh/check_16.png" runat="server" />
                        <asp:Literal ID="lblTrangThai" runat="server" Text=<%# Eval("IsUse") %> Visible="false"></asp:Literal>
<asp:Label ID="lblMa" runat="server" Visible="false" Text=<%# Eval("ThanhVienID") %>></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                </Columns>
            <FooterStyle BackColor="White" ForeColor="#333333" />
            <PagerStyle BackColor="#336666" ForeColor="White" HorizontalAlign="Center" />
            <SelectedRowStyle BackColor="#339966" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#336666" Font-Bold="True" ForeColor="White" />
       
        </asp:GridView>
 
Ở đây tôi dùng textbox hiển thị dữ liệu để người dùng có thể chỉnh sửa trực tiếp. Trên mỗi dòng của gridview có một button với command Name và sau đó ta tạo sự kiện tương ứng cho button đó. Một label hiển thị mã thành viên để truy vấn dữ liệu trên mã đó.
 
Trong sự kiện RowDataBound của Gridview:
 
protected void DS_ThanhVien_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowIndex < 0) return;
        ImageButton cmdTrangThai = (ImageButton) e.Row.FindControl("cmdTrangThai");
 
        if (DataBinder.Eval(e.Row.DataItem, "IsUse").ToString() == "1")
        {
            cmdTrangThai.ImageUrl = "../hinh/check_16.png";
            cmdTrangThai.ToolTip = "Đã kích hoạt tài khoản";
            //cmdTrangThai.Enabled = false;
        }
        else
        {
            cmdTrangThai.ImageUrl = "../hinh/delete.jpg";
            cmdTrangThai.ToolTip = "Chưa kích hoạt tài khoản";
            //cmdTrangThai.Enabled = true;
        }
 
    }
 
Sự kiện RowUpdating của gridview phục vụ cho việc cập nhật dữ liệu
 
protected void DS_ThanhVien_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        TextBox txtHoTen = (TextBox)DS_ThanhVien.Rows[e.RowIndex].FindControl("txtHoTen");
        TextBox txtDiaChi = (TextBox)DS_ThanhVien.Rows[e.RowIndex].FindControl("txtDiaChi");
        TextBox txtDienThoai = (TextBox)DS_ThanhVien.Rows[e.RowIndex].FindControl("txtDienThoai");
        Label lblMa = (Label)DS_ThanhVien.Rows[e.RowIndex].FindControl("lblMa");
 
        ketnoiDataContext pKetNoi = new ketnoiDataContext();
        ThanhVien pThanhVienCapNhat = pKetNoi.ThanhViens.Single(p => p.ThanhVienID == Int32.Parse(lblMa.Text));
        pThanhVienCapNhat.HoTen = txtHoTen.Text;
        pThanhVienCapNhat.DienThoai = txtDienThoai.Text;
        pThanhVienCapNhat.DiaChi = txtDiaChi.Text;
        pKetNoi.SubmitChanges();
 
        lblThongBao.Text = "Bạn đã cập nhật thành công";
 
    }
 
Ở đây tôi dùng linq để truy vấn dữ liệu, bạn có thể sửa lại cho phù hợp với code của bạn.
 
Sự kiện RowDeleting: Thay đổi trạng thái của thành viên
 
protected void DS_ThanhVien_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        ImageButton cmdTrangThai = (ImageButton)DS_ThanhVien.Rows[e.RowIndex].FindControl("cmdTrangThai");
        Literal lblTrangThai = (Literal)DS_ThanhVien.Rows[e.RowIndex].FindControl("lblTrangThai");
        Label lblMa = (Label)DS_ThanhVien.Rows[e.RowIndex].FindControl("lblMa");
 
       
            ketnoiDataContext pKetNoi = new ketnoiDataContext();
            ThanhVien pThanhVienCapNhat = pKetNoi.ThanhViens.Single(p => p.ThanhVienID == Int32.Parse(lblMa.Text));
            if (lblTrangThai.Text == "0")
                pThanhVienCapNhat.IsUse = 1;
            else
                pThanhVienCapNhat.IsUse = 0;
 
            pKetNoi.SubmitChanges();
 
            HienDuLieu();
 
 
 
    }

Cám ơn các bạn đã đọc bài viết này. Nếu bạn cảm thấy bài viết này hay và có ích thì hãy ấn +1 hoặc like để khích lệ tác giả bài viết nhé, và nếu được thì share cho bạn bè cùng đọc. Thanks ^o^

Bài viết liên quan


8/19/2012 12:33:08 PM
Bạn thiết kế một trang site tin tức đòi hỏi công việc cập nhật tin tức tự động một cách thường xuyên? Nhưng bạn không có đủ nhân lực và thời [....]
8/19/2012 10:27:00 AM
Với số lượng dữ liệu quá nhiều không thể hiện lên hết trong 1 trang thì việc phân trang là một công việc chắc chắn phải làm. Có rất nhiều cá [....]
6/7/2012 11:19:49 AM
Bạn sử dụng một iframe trong website để hiển thị nội dung (nội dung một website khác hoặc nội dung từ các file tài liệu, ....) nhưng bạn gặp [....]
5/21/2012 8:12:43 AM
Khi publish một website chạy trên internet thì sẽ phát sinh nhiều lỗi ngoài mong muốn. Một lỗi thường xuyên gặp nhất là lỗi 404 (Page not fo [....]
5/19/2012 12:29:57 PM
Khi các bạn thực hiện rewrite URL cho website, công việc cần thiết là làm thế nào để chuyển đổi được từ tiếng Việt có dấu sang không dấu. Ở [....]
4/30/2012 9:41:42 PM
Bạn thiết kế một website cho khách hàng, giao quyền admin cho khách hàng có thể cập nhật dữ liệu. Nhưng khi khách hàng upload hình ảnh sản p [....]
4/28/2012 9:29:43 AM
Gọi một hàm từ server side bằng javascript là một câu hỏi được rất nhiều bạn hỏi WEBXAULA với nhiều lý do muốn truy xuất dữ liệu, gọi sessio [....]
4/23/2012 3:48:42 PM
Trong bài viết này, WEBXAULA sẽ giới thiệu tới các bạn cách tạo chức năng xoá cùng lúc nhiều dòng dữ liệu giống Yahoo Mail hoặc Google Mail
4/23/2012 3:15:48 PM
Trong bài viết trước, WEBXAULA đã giới thiệu với các bạn cách làm đồng hồ đếm ngược trong asp.net. Có nhiều bạn phản hồi hỏi mình cách làm c [....]
4/22/2012 2:35:07 PM
Khi thiết kế một website, công việc phân dữ liệu thành nhiều trang hiển thị là bắt buộc khi dữ liệu lớn. Trong các control của Visual Studio [....]
1 2
Doanh Nghiệp Tư Nhân TM DV TAHI TAKA
Văn phòng: G7, ấp Mỹ Hoà 2, xã Xuân Thới Đông, huyện Hóc Môn, TPHCM
Điện thoại: (84-8) 6250 1751 - 0909.017.015
Email: contact@webxaula.com - ktwebpro@gmail.com
Website: www.webxaula.com