2010-11-30 5 views
0

Je suis la poste:contrôles utilisateur multiples et clientid asp.net JS

http://mosesofegypt.net/post/GridView-with-Select-All-CheckBox-using-JQuery.aspx

pour créer une colonne de cases à cocher en asp.net gridview avec sélectionner/désélectionner toutes les fonctionnalités. Dans mon cas, le code gridview et le code javascript (JQuery) se trouvent dans un contrôle usercontrol dynamiquement chargé, et il existe plusieurs instances de ce contrôle utilisateur. La fonctionnalité select/deselect ne fonctionne que dans le dernier usercontrol créé sur la page. En d'autres termes, le fichier gvProducts.ClientId du script js ne connaît que la dernière grille. Des idées comment puis-je faire référence aux ClientIds de gridview à l'intérieur d'autres usercontrol (c'est-à-dire autre que le dernier)? Toute aide serait grandement appréciée.

EDIT: Cette question est essentiellement la même que celle posée dans ce post: Multiple user control instances and ClientID in JS mais il n'y a pas de réponses d'aide pour cela.

Merci, Ali

Répondre

0

Vous pouvez ajouter un CssClass à la GridView et la base de votre sélecteur jQuery hors de cela.

Script:

<script type="text/javascript"> 
    $(function() { 
     $(".t th input:checkbox").click(function() { 
      var $checkbox = $(this).closest('table').find(':checkbox:not(:first)'); 
      $checkbox.attr('checked', $(this).attr('checked')); 
     }); 
    }); 
</script> 

2 tables avec le même nom de classe:

<table class="t">   
    <tr> 
     <th align="left" scope="col">Category</th> 
     <th align="left" scope="col">Product</th> 
     <th align="right" scope="col">Unit Price</th> 
     <th align="left" scope="col">Supplier</th> 
     <th scope="col"> 
      <input type="checkbox" name="select-all" /> 
     </th> 
    </tr> 
    <tr> 
     <td></td> 
     <td></td> 
     <td></td> 
     <td><input type="checkbox" /></td> 
    </tr> 
    <tr> 
     <td></td> 
     <td></td> 
     <td></td> 
     <td><input type="checkbox" /></td> 
    </tr> 
    <tr> 
     <td></td> 
     <td></td> 
     <td></td> 
     <td><input type="checkbox" /></td> 
    </tr> 
</table> 
<br /><br /><br /> 
<table class="t">   
    <tr> 
     <th align="left" scope="col">Category</th> 
     <th align="left" scope="col">Product</th> 
     <th align="right" scope="col">Unit Price</th> 
     <th align="left" scope="col">Supplier</th> 
     <th scope="col"> 
      <input type="checkbox" name="select-all" /> 
     </th> 
    </tr> 
    <tr> 
     <td></td> 
     <td></td> 
     <td></td> 
     <td><input type="checkbox" /></td> 
    </tr> 
    <tr> 
     <td></td> 
     <td></td> 
     <td></td> 
     <td><input type="checkbox" /></td> 
    </tr> 
    <tr> 
     <td></td> 
     <td></td> 
     <td></td> 
     <td><input type="checkbox" /></td> 
    </tr> 
</table> 
+0

Merci fehays, Mais cette façon, le CssClass appliquera à tous les gridviews à la page et la sélectionner/désélectionner volonté appliquer à tous les gridviews. Je dois être capable de travailler sur un seul gridview. D'autres suggestions? – Ali

+0

Est-ce que la grille unique avec laquelle vous voulez travailler sera toujours le même index? Par exemple, le 2ème gridview, ou le 1er, etc? Si c'est le cas, vous pouvez utiliser jquery eq() pour obtenir le spécifique. par exemple. - $ (". classname: eq (2)") vous donnera le troisième élément où class = "classname" – fehays

+0

Non, ce ne sera pas toujours le même index, ni le nombre total de contrôles n'est connu à l'avance. Aussi, quand j'ai dit "grille unique", je voulais dire que lorsque je sélectionne la case à cocher de l'en-tête d'une grille particulière, elle doit sélectionner/désélectionner toutes les boîtes de chèques de cette grille uniquement. – Ali

Questions connexes