2010-11-30 5 views
0

ich die Post am folgenden:Mehrere Bedienelemente und clientid asp.net JS

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

eine Checkbox Spalte in asp.net gridview mit select/deaktivieren Sie alle Funktionen zu erstellen. In meinem Fall liegt die Gridview und der JavaScript-Code (JQuery) in einem dynamisch geladenen Benutzersteuerelement, und es gibt mehrere Instanzen dieses Benutzersteuerelements. Die Funktion Auswählen/Abwählen funktioniert nur in der letzten Benutzersteuerung, die auf der Seite erstellt wurde. Mit anderen Worten, die gvProducts.ClientId im js-Skript kennt nur die letzte Gridview. Irgendwelche Ideen wie bekomme ich einen Verweis auf die ClientIds von Gridview innerhalb anderer Benutzersteuerung (d. H. Andere als die letzte)? Jede Hilfe würde sehr geschätzt werden.

EDIT: Diese Frage ist im Wesentlichen die gleiche wie in diesem Beitrag gefragt: Multiple user control instances and ClientID in JS aber es gibt keine helfenden Antworten dafür.

Danke, Ali

Antwort

0

Sie könnten einen CssClass auf die Gridview und stützen Sie Ihre jQuery-Selektor aus davon hinzufügen.

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 Tabellen mit demselben Klassennamen:

<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

Dank fehays, aber auf diese Weise die CssClass allen Gridviews auf Seite gelten und die Auswahl/Ausschluss aller Willen gelten für alle Rasteransichten. Ich muss in der Lage sein, an einer einzelnen Gridview zu arbeiten. Irgendwelche weiteren Vorschläge? – Ali

+0

Wird die einzelne Gridview, mit der Sie arbeiten möchten, immer denselben Index haben? Zum Beispiel, die zweite Rasteransicht oder die erste usw.? Wenn ja, könnten Sie die jquery eq() verwenden, um die spezifische zu erhalten. z.B. - $ (". Klassenname: eq (2)") würde Ihnen das dritte Element geben, wo class = "Klassenname" – fehays

+0

Nein, es wird nicht immer der gleiche Index sein, noch ist die Gesamtzahl der Kontrollen im Voraus bekannt. Auch wenn ich "single gridview" meinte, meinte ich, dass wenn ich das Header-Kontrollkästchen einer bestimmten Gridview anwähle, es alle checboxes dieser Gridview nur auswählen/abwählen sollte. – Ali