2011-09-09 6 views
4

J'ai un gridview où les cases à cocher commencent désactivé. Je veux les activer quand je clique sur le bouton d'édition qui est également dans la grille. Voici le balisageCheckBox Gridview Activer et désactiver

<asp:GridView ID="grd_Bookcode" runat="server" DataSourceID="sqldatasource1" 
autogeneratecolumns="False" onrowcommand="grd_Bookcode_RowCommand1" 
onrowdatabound="grd_Bookcode_RowDataBound"> 
<Columns> 
    <asp:BoundField DataField="BookCode" HeaderText="Book Code"/> 
    <asp:BoundField DataField="mag_name" HeaderText="Name"/> 
    <asp:BoundField DataField="display_date" HeaderText="Display Date"/> 
    <asp:TemplateField HeaderText = "PC"> 
     <ItemTemplate> 
      <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Eval("82_PC").ToString() == "1" ? true:false %>' Enabled="false" /> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="eReader"> 
     <ItemTemplate> 
      <asp:CheckBox ID="CheckBox2" runat="server" Checked='<%# Eval("83_eReader").ToString() == "1" ? true:false %>' Enabled="false" /> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="Tablet"> 
     <ItemTemplate> 
      <asp:CheckBox ID="CheckBox3" runat="server" Checked='<%# Eval("84_Tablet").ToString() == "1" ? true:false %>' Enabled="false"/> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="Mobile"> 
     <ItemTemplate> 
      <asp:CheckBox ID="CheckBox4" runat="server" Checked='<%# Eval("85_Mobile").ToString() == "1" ? true:false %>' Enabled="false" /> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="None"> 
     <ItemTemplate> 
      <asp:CheckBox ID="CheckBox5" runat="server" Checked='<%# Eval("86_None").ToString() == "1" ? true:false %>' Enabled="false" /> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:CommandField ShowEditButton="True" /> 
</Columns> 

Et voici le code que je suis en train d'utiliser. Fondamentalement, lorsque je clique sur le bouton d'édition, je veux que les cases à cocher soient activées. Pour quelque raison que ce soit, la case à cocher n'est pas activée du tout lorsque la page est rechargée. J'ai juste commencé à essayer d'activer "Checkbox1" après avoir cliqué sur le bouton d'édition, mais je veux finalement activer les 5 cases à cocher.

protected void grd_Bookcode_RowCommand1(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "Edit") 
     { 
      int index = Convert.ToInt32(e.CommandArgument); 

      GridViewRow row = grd_Bookcode.Rows[index]; 

      CheckBox chk = (CheckBox)row.FindControl("CheckBox1"); 
      chk.Enabled = true; 


     } 
    } 
+0

Qu'est-ce qui se passe avec le code que vous utilisez? –

+0

Ce code n'active-t-il pas la case à cocher? Pourriez-vous être plus clair sur la question? – Praveen

+0

et quelle est la question? qu'est-ce qui ne fonctionne pas? Si vous déboguez, réussissez-vous à atteindre cette ligne de code: CheckBox chk = (CheckBox) row.FindControl ("CheckBox1"); ? –

Répondre

3

Si vous voulez que le contrôle d'édition soit différent du contrôle standard, vous devez utiliser le "EditItemTemplate". Cela permettra à la ligne d'édition d'avoir différents contrôles, valeurs, etc ... lorsque le mode de la ligne change.

Exemple:

 <Columns> 
      <asp:TemplateField HeaderText="PC"> 
       <ItemTemplate> 
        <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Eval("82_PC").ToString() == "1" ? true:false %>' Enabled="false" /> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:CheckBox ID="CheckBox1" runat="server" Checked="true" Enabled="false" /> 
       </EditItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
+0

parfait, exactement ce dont j'avais besoin, merci un tas – Jeff

+0

n'oubliez pas de marquer cela comme la réponse si elle résout votre problème! – Zachary

+0

@Zachary merci beaucoup !! J'ai cherché ceci pour AGES maintenant, l'ai gardé gentil et simple! –

1

Je suppose que vous pourriez créer une boucle à travers toutes les lignes de la GridView et cochez les cases quelque chose comme ci-dessous:

protected void grd_Bookcode_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "Edit") 
     { 
      for (int index = 0; index < GridView1.Rows.Count; index++) 
      { 
       CheckBox chk = grd_Bookcode.Rows[index].FindControl("CheckBox" + index + 1) as CheckBox; 
       chk.Enabled = true; 
      } 
     } 
    } 

Hope this helps !!

+0

droite, c'était ce que j'allais faire, mais en utilisant edititemtemplate était juste un moyen beaucoup plus facile de le faire – Jeff