使用VB.Net(Windows应用程序)
我在girdview列中使用了复选框,现在我想在标题中添加一个复选框。
如果我选中标题中的复选框,则列中的所有复选框都应自动选择。
如何做到这一点。
需要VB.Net代码帮助
答案 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来检查所有行。