0

我有一个网格视图。其中包含两个复选框项目模板。

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

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

4

1 回答 1

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),这将是 aGridviewRow然后找到CheckBoxPractical控件,然后检查是否针对其他复选框值。

这是一种冗长的方法,但在解释该方法时是最简单的。

于 2013-07-18T10:23:54.350 回答