如何制作 Gridview 标题复选框

Gop*_*pal 0 vb.net asp.net

使用 VB.Net(Windows 应用程序)

我在 girdview 列中使用复选框,现在我想在标题中添加一个复选框。

如果我选中标题中的复选框,则列中的所有复选框都应自动选中。

这该怎么做。

需要 VB.Net 代码帮助

ada*_*ost 5

在 中添加第一个复选框(处理CheckedChanged事件和设置AutoPostBack=TrueHeaderTemplate并在中添加 第二个复选框。ItemTemplateTemplateField

标记

<asp:GridView 
    ID="GridView1" 
    runat="server"
    AutoGenerateColumns="false"
    >
<Columns>
    <asp:TemplateField>
        <HeaderTemplate>
            <asp:CheckBox 
                ID="CheckBox1" 
                runat="server"
                AutoPostBack="true"
                OnCheckedChanged="CheckUncheckAll"
                />
        </HeaderTemplate>
        <ItemTemplate>
            <asp:CheckBox ID="CheckBox2" runat="server" /> 
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField>
        <HeaderTemplate>
            Name
        </HeaderTemplate>
        <ItemTemplate>
            <asp:Literal 
                ID="Literal1" 
                runat="server"
                Text='<%#Eval("Name") %>'
                >
            </asp:Literal>
        </ItemTemplate>
    </asp:TemplateField>
</Columns>
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)

代码隐藏

  Public Class Data
        Public Property Name As String
    End Class

    Protected Sub CheckUncheckAll(sender As Object, e As System.EventArgs)
        Dim chk1 As CheckBox
        chk1 = DirectCast(GridView1.HeaderRow.Cells(0).FindControl("CheckBox1"),CheckBox)
        For Each row As GridViewRow In GridView1.Rows
            Dim chk As CheckBox
            chk =DirectCast(row.Cells(0).FindControl("CheckBox2"),CheckBox)
            chk.Checked = chk1.Checked
        Next
    End Sub
    Dim lst As List(Of Data)
    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            lst = New List(Of Data)
            lst.Add(New Data() With {.Name = "A"})
            lst.Add(New Data() With {.Name = "B"})
            lst.Add(New Data() With {.Name = "C"})

            GridView1.DataSource = lst
            GridView1.DataBind()
        End If
    End Sub
Run Code Online (Sandbox Code Playgroud)