2017-09-03 7 views
1

J'ai un DetailsView dans ma page aspx avec deux cases à cocher dans les colonnes modèle d'élément. J'ai un buttoun en dehors de DetailsView. Ce dont j'ai besoin, c'est quand je clique sur le bouton, il faut vérifier si les deux cases à cocher sont cochées et déclencher la commande C#. aidez s'il vous plaît. Permettez-moi de coller le code ci-dessous:ASP C# CheckBox dans DetailsView

.aspx

<div> 
     <asp:Button ID="Button3" runat="server" Text="Button" OnClick="Button3_Click" /> 
    </div> 
    <asp:DetailsView ID="DetailsView2" runat="server" Height="50px" Width="125px" AutoGenerateRows="False" DataSourceID="SqlDataSource2"> 
     <Fields> 
      <asp:TemplateField HeaderText="StudentName" SortExpression="StudentName"> 
       <ItemTemplate> 
        <asp:CheckBox ID="CheckBox1" runat="server" /> 
        <asp:Label ID="Label1" runat="server" Text='<%# Bind("StudentName") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Email" SortExpression="Email"> 

       <ItemTemplate> 
        <asp:CheckBox ID="CheckBox2" runat="server" /> 
        <asp:Label ID="Label2" runat="server" Text='<%# Bind("Email") %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Fields> 
    </asp:DetailsView> 

C#

protected void Button3_Click(object sender, EventArgs e) 
    { 

    } 

Répondre

0

Un DetailsView est un contrôle lié de données qui peut contenir un nombre illimité de lignes, pas seulement un.

Si vous voulez vérifier les deux cases sont cochées, dans chaque ligne, vous devez parcourir toutes les lignes du DetailsView, et jeter le CheckBox de FindControl sur chaque ligne:

protected void Button3_Click(object sender, EventArgs e) 
{ 
    for (int i = 0; i < DetailsView2.Rows.Count; i++) 
    { 
     CheckBox chk1 = (CheckBox)DetailsView2.Rows[i].FindControl("CheckBox1"); 
     CheckBox chk2 = (CheckBox)DetailsView2.Rows[i].FindControl("CheckBox2"); 

     if (chk1.Checked && chk2.Checked) 
     { 
      // Do Stuff 
     } 
    } 
} 

Si vous voulez vérifier toutes les cases sont en toutes contrôlées après des lignes, faites ceci:

protected void Button3_Click(object sender, EventArgs e) 
{ 
    // Declare a boolean flag 
    bool AllCheckBoxesAreChecked = true; 

    for (int i = 0; i < DetailsView2.Rows.Count; i++) 
    { 
     CheckBox chk1 = (CheckBox)DetailsView2.Rows[i].FindControl("CheckBox1"); 
     CheckBox chk2 = (CheckBox)DetailsView2.Rows[i].FindControl("CheckBox2"); 

     if (!chk1.Checked || !chk2.Checked) 
      AllCheckBoxesAreChecked = false; 
    } 

    // Now use the flag 
    if (AllCheckBoxesAreChecked) 
    { 
     // Do Stuff 
    } 
}