如果选中一行复选框,如何在网格视图上选中复选框?

时间:2013-07-18 09:43:52

标签: asp.net gridview checkbox

我有一个gridview。其中包含两个复选框项模板。

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" 
                    CellPadding="4" ForeColor="#333333" GridLines="None" 

 <Columns>

   <asp:BoundField DataField="student_name" HeaderText="Student Name"            SortExpression="student_name" >
        <ItemStyle HorizontalAlign="Center"></ItemStyle>
 </asp:BoundField>
                    <asp:BoundField DataField="student_id" 
    HeaderText="Student ID" ItemStyle-HorizontalAlign="Center"
                        SortExpression="student_id" ReadOnly="True" >
      <ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:BoundField>

   <asp:TemplateField HeaderText="Practical Test">
   <ItemTemplate>
     <asp:CheckBox AutoPostBack="false" Checked="true" Id="CheckBoxTheory"  runat="server" />
     </ItemTemplate>
        </asp:TemplateField>
           <asp:TemplateField HeaderText="Theory Test">
   <ItemTemplate>
    <asp:CheckBox AutoPostBack="false" Checked="true" Id="CheckBoxPractical" runat="server"  />
  </ItemTemplate>
     </asp:TemplateField>
     </Columns>       

当检查一行网格视图的任意一个复选框时,我想自动检查另一个复选框..反之亦然..怎么可能?

1 个答案:

答案 0 :(得分:0)

在服务器端,您需要更改复选框,使其为AutoPostBack="True"并添加OnCheckedChanged="CheckBoxTheory_Checked",以便系统在您选择时可以回发。

然后你可以使用以下内容:

Sub CheckBoxTheory_Checked (sender as object, e as eventargs)
    Dim CheckBoxTheory as CheckBox = sender
    Dim gvRow as GridviewRow = DirectCast(CheckBoxTheory.NamingContainer, GridviewRow)
    Dim CheckBoxPractical as CheckBox = gvRow.FindControl("CheckBoxPractical")
    If CheckBoxTheory.Checked = True Then
        CheckBoxPractical.Checked = True
    Else
        CheckBoxPractical.Checked = False
    End If
End Sub

这会将sender作为复选框,获取父容器(或NamingContainer),这将是GridviewRow,然后找到CheckBoxPractical控件然后检查是否反对其他复选框值。

这是一个漫长的方式,但最简单的解释方法。