2011-04-21 2 views
10

J'ai actuellement un GridView qui affiche les données d'une table des étudiants, voici ma grille et SQLDataSource associé;Boucler les lignes GridView et cocher le contrôle de la case à cocher

     <asp:GridView ID="GridView2" 
         style="position:absolute; top: 232px; left: 311px;" 
          AutoGenerateColumns="false" runat="server" 
         DataSourceID="SqlDataSource4"> 
         <Columns> 
          <asp:TemplateField> 
          <ItemTemplate > 
          <asp:CheckBox runat="server" ID="AttendanceCheckBox" /> 
          </ItemTemplate> 
          </asp:TemplateField> 
          <asp:TemplateField> 
          <ItemTemplate> 
          <asp:Label ID="studentIDLabel" Text='<%# Eval("StudentID") %>' runat="server"></asp:Label> 
          </ItemTemplate> 
          </asp:TemplateField>      
          <asp:BoundField DataField="Name" HeaderText="Name" /> 
         </Columns> 
        </asp:GridView> 

        <asp:SqlDataSource ID="SqlDataSource4" runat="server" 
         ConnectionString="<%$ ConnectionStrings:RegisterConnectionString %>" 
         SelectCommand="SELECT [StudentID], [Name] FROM [Student] WHERE CourseID = @CourseID ">       
         <SelectParameters> 
          <asp:ControlParameter ControlID="CourseDropDownList" Name="CourseID" 
           PropertyName="SelectedValue" Type="Int32" /> 
         </SelectParameters> 
        </asp:SqlDataSource> 

J'ai un bouton sur la page qui, lorsque l'utilisateur clique sur le bouton que je dois boucle à travers chaque ligne de la GridView, puis Cochez la case située alors je dois vérifier si la case est cochée ou non. Si la case est cochée, j'ai besoin d'ajouter la valeur dans le champ du modèle d'étiquette à une table différente dans la base de données. J'utilise le code C#. Toute aide est très appréciée, merci d'avance!

Répondre

32

boucle comme

foreach (GridViewRow row in grid.Rows) 
{ 
    if (((CheckBox)row.FindControl("chkboxid")).Checked) 
    { 
    //read the label    
    }    
} 
+0

Comment lire la valeur dans l'étiquette? – user715115

+0

Voyez si vous pouvez trouver le contrôle, alors vous pouvez utiliser toutes ses propriétés, c'est-à-dire var checkbox = row.FindControl ("chkboxid") comme CheckBox; – Jeremy

+0

J'ai fait un tweak rapide, parce que je suis paranoïaque à propos des exceptions nulles. foreach (ligne GridViewRow dans la grille.Rows) { var chk = (CheckBox) row.FindControl ("chkboxid"); if (chk! = Null && chk.Checked) { // lire l'étiquette } } –

2

vous avez itérer lignes gridview

for (int count = 0; count < grd.Rows.Count; count++) 
{ 
    if (((CheckBox)grd.Rows[count].FindControl("yourCheckboxID")).Checked) 
    {  
     ((Label)grd.Rows[count].FindControl("labelID")).Text 
    } 
} 
+0

Donc ce code passera par chaque ligne GridView, trouver le contrôle de case à cocher et vérifiez si la case a été cochée? Comment puis-je obtenir la valeur du champ Modèle d'étiquette à insérer dans une autre table dans la base de données? Merci – user715115

+1

Si le GridView a pagination, la réponse ci-dessus ne fera que passer en boucle dans les enregistrements de la page en cours. – ssmsnet

Questions connexes