2010-10-14 6 views
0

Dans un GridView (ASP.NET/C#), j'ai un certain nombre de champs de modèle - les 2 correspondant à la question sont 'checkbox1' et 'quantity'. La case à cocher commence comme non cochée pour chaque ligne et la quantité commence comme désactivée pour chaque ligne. Mais lorsque l'utilisateur cochera l'une des cases à cocher, j'ai besoin d'un morceau de JavaScript ou de quelque chose pour vérifier si la case correspondante est cochée, et si c'est le cas, activez la zone de texte Nombre de lignes.Activer les colonnes GridView lorsque la case à cocher GridView est cochée

Comment faire?

+0

Vous voulez faire cela sans faire une publication? – EJC

+0

Idéalement, oui. Publier chaque fois que la boîte est sélectionnée serait un peu inélégant. – Chris

+0

Je suis d'accord. La publication serait la plus simple, mais pas la plus rapide. (Ou la plus élégante) – EJC

Répondre

1

Assurez-vous de commencer avec votre quantité désactivée. Je suppose qu'il est une zone de texte:

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:CheckBox ID="checkbox1" runat="server" /> 
    </ItemTemplate> 
</asp:TemplateField> 
<asp:TemplateField> 
    <ItemTemplate> 
     <asp:TextBox ID="quantity" runat="server" Enabled="false" /> 
    </ItemTemplate> 
</asp:TemplateField> 

Ajouter ce morceau de javascript sur votre page:

<script type="text/javascript"> 

    function ChangeQuantityEnable(id, enable) { 
     document.getElementById(id).disabled = !enable; 
    } 

</script> 

Ensuite, dans le gestionnaire d'événements RowDataBound pour votre gridview, ajoutez

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    CheckBox chk = (CheckBox)e.Row.FindControl("checkbox1"); 
    TextBox txt = (TextBox)e.Row.FindControl("quantity"); 

    chk.Attributes["onclick"] = string.Format("ChangeQuantityEnable('{0}', this.checked);", txt.ClientID); 
} 
+0

A travaillé absolument parfait. Merci beaucoup! – Chris

Questions connexes