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


4/22/2012 2:11:39 PM
Một trong những bước quan trọng khi tiến hành tối ưu hoá website là sử dụng URL thân thiện với google. Trong bài viết này WEBXAULA sẽ giới t [....]
4/20/2012 11:49:27 AM
Trong các website thường có phần liên hệ để người dùng liên hệ với quản lý website đó. Trong bài viết này, WEBXAULA làm form liên hệ như WEB [....]
4/20/2012 11:17:54 AM
Khi xây dựng một website, nhiều khi bạn phải thực hiện lồng các control để hiển thị dữ liệu, vd như hiển thị các bài viết theo đúng danh mục [....]
4/17/2012 4:45:36 PM
reCaptcha là 1 dịch vụ giúp chúng ta có thể chống lại bot, và những submit không phải do con người (do engine). Bài viết này sẻ hướng dẫn cá [....]
4/17/2012 4:38:54 PM
Bạn nhận một đơn đặt hàng thiết kế website yêu cầu có một đồng hồ thời gian đếm ngược (VD: đấu giá, thời gian khuyến mãi, v.v...) nhưng làm [....]
4/17/2012 4:29:58 PM
Có khá nhiều cách để export dữ liệu ra file excel. WEBXAULA sẽ đơn cử một phương pháp khá đơn giản (không cần phải chèn thêm thư viện bên ng [....]
3/6/2012 6:34:18 PM
Không có một bí quyết nào về việc đẩy mạnh doanh số bán hàng qua Internet. Bạn thu hút sự chú ý của đông đảo mọi người và gia tăng các khách [....]
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