Asp.net thêm cột CheckBox trong Gridview

Bạn sử dụng Gridview để hiển thị dữ liệu và bạn muốn có thêm cột Checkbox cho phép người dùng chọn các Rows của gridview.

Đây là hình ảnh minh họa cho kết quả của bài viết
Gridview
Để làm được bạn cần thêm cột TemplateField trong Grid như sau Ở đây tôi lấy dữ liệu minh họa được bind từ một file Access

<asp:GridView runat=”server” AutoGenerateColumns=”False”
DataSourceID=”AccessDataSource1″>
<RowStyle ForeColor=”#000066″ />
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID=”chkHead” runat=”server”
onclick=”changeCheckState(this);” />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID=”chkCheckItem” runat=”server” />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField=”MaSP” HeaderText=”Mã Sp” />
<asp:BoundField DataField=”TenSanPham” HeaderText=”Tên sản phầm” />
<asp:BoundField DataField=”SoLuong” HeaderText=”Số lượng” />
<asp:BoundField DataField=”DonGia” HeaderText=”Đơn giá” />
</Columns>
</asp:GridView>
<asp:AccessDataSource ID=”AccessDataSource1″ runat=”server” DataFile=”SP.mdb”
SelectCommand=”SELECT [MaSP], [TenSanPham], [SoLuong], [DonGia] FROM [TB_SanPham]”>
</asp:AccessDataSource>

Tiếp theo để khi ta click chọn checkbox ở Head của Gridview thì các checkbox item của Gridview sẽ có trạng thái đảo ngược so với trạng thái trước khi chọn bạn viết hàm như sau trong thẻ Head của trang

<script type=”text/javascript” language=”javascript”>
function changeCheckState() {
try {
var frm = document.forms[0];
var i = 0;
for (i = 0; i < frm.length; i++) {
if (frm.elements[i].id.indexOf(‘chkCheckItem’) != -1) {
if (document.getElementById(frm.elements[i].id) != null) {
if (frm.elements[i].checked == false) {
frm.elements[i].checked = true;
} else {
frm.elements[i].checked = false;
}
}
}
}
} catch (err) { }
}
</script>

Theo hmweb.com.vn

Về tieuyeuit
Lập trình viên Asp.net Tôi chia sẻ một,bạn chia sẻ một và chúng ta có rất nhiều!

3 Responses to Asp.net thêm cột CheckBox trong Gridview

  1. Hòa Phúc nói:

    mình đang làm nút xóa cũng sử dụng checkbox để chọn dòng muốn xóa trong gridview, nhưng nó báo lỗi như thế nầy:
    Index was out of range. Must be non-negative and less than the size of the collection.
    Parameter name: index
    Còn đây là code của mình.
    Protected Sub btnxoa_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnxoa.Click

    ‘Dim ma As Integer = GridV.SelectedIndex.ToString
    If (GridV.Rows.Count 0) Then

    For Each row As GridViewRow In GridV.Rows

    Dim chk As CheckBox = CType(row.FindControl(“chkSelect”), CheckBox)

    Dim dong As Integer = CInt(GridV.DataKeys(row.RowIndex).Value)\\bị lỗi dòng này
    If (chk.Checked = True) Then

    Dim sql As String = “Delete from Tb_Document where DocumentID=” & dong & ” ”
    row.Visible = False
    Execute(sql)
    End If
    Next row
    End If
    DataGridview()

    mong các bạn giúp mình khắc phục. Cảm ơn các bạn

  2. Hòa Phúc nói:

    Cảm ơn bạn nhiều. nhưng không gọi được value.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: