如何制作Gridview标题复选框

时间:2011-10-10 06:29:17

标签: asp.net vb.net

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

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

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

如何做到这一点。

需要VB.Net代码帮助

3 个答案:

答案 0 :(得分:4)

CheckedChanged中添加第一个复选框(处理AutoPostBack=True事件并设置HeaderTemplate)并在{{添加第二个复选框1 {} ItemTemplate

标记

TemplateField

代码隐藏

<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>

答案 1 :(得分:1)

Protected Sub chkbSelectAll_CheckedChanged(sender As Object, e As EventArgs)
    Dim chkFlag As Boolean = False
    If chkbSelectAll.Checked Then
        chkFlag = True
    End If
    For Each dr As GridViewRow In gvProducts.Rows
        Dim chk As CheckBox = DirectCast(dr.Cells(0).FindControl("Select"), CheckBox)
        chk.Checked = chkFlag
    Next
End Sub

我不确定这段代码是否写得很好。我只是从这个C#代码转换(正在运行);

protected void chkbSelectAll_CheckedChanged(object sender, EventArgs e)
    {
        bool chkFlag = false;
        if (chkbSelectAll.Checked) chkFlag = true;
        foreach (GridViewRow dr in gvProducts.Rows)
        {
            CheckBox chk = (CheckBox)dr.Cells[0].FindControl("Select");
            chk.Checked = chkFlag;
        }
    }

算法很简单。定义一个布尔值,用于选中是否选中复选框。如果选中则指定为true。对于所有gridview行,找到具有列名称的控件,然后将它们全部设置。

答案 2 :(得分:0)

您需要使用Header template才能呈现复选框。并且当检查标题时,您将需要一些javascript来检查所有行。