2009-06-28 5 views
3

Ich versuche, alle ausgewählten Kontrollkästchen des Repeater-Elements kurz vor der Seitenbewegung (Paginierung) zu bekommen, und sie an einem Ort zu speichern.Repeater Items

foreach (RepeaterItem ri in rpt.Items) 
    {   
     CheckBox box = (CheckBox)ri.FindControl("chkBox"); 
     if (box.Checked) 
     { 
      ... 
     } 
    } 

Das Problem ist, wo ich diese Funktion aufrufen? Ich habe versucht, es von ObjectDataSource1_Selected zu nennen (ich verwende Object Repeater zu füllen) und ObjectDataSource1_Selecting aber rpt.Items.Count auch 0.

rpt_PreRender() Ereignis, gibt die richtige Anzahl der Elemente, aber es geschieht, bevor die Auswahl der Checkboxen und nicht danach.

Was kann ich tun?

+0

mit der Veranstaltung ItemDataBound Repeater Versuchen. – Darnell

Antwort

7

die Art und Weise Sie ist nicht möglich, suchen ... plz versuchen, diesen Code verwenden ...

if (Repeater1.Items.Count > 0) 
    { 
     for (int count = 0; count < Repeater1.Items.Count; count++) 
     { 
      CheckBox chk = (CheckBox)Repeater1.Items[count].FindControl("CheckBox1"); 
      if (chk.Checked) 
      { 

      } 
     } 
    } 
0

Der Repeater hat keine integrierte Paginierung (wie die GridView oder andere komplexe Steuerelemente), so dass er keine Ereignisse wie die PageIndexChanging bietet. Ich gehe daher davon aus, dass Sie eine eigene Seitennavigation implementiert haben. Sie sollten daher die Funktion aufrufen, die Sie innerhalb dieser implementierten Funktion dargestellt haben.

Wenn die Frage zu Paging ohne Beziehung ist, würde ich einfach vorgeschlagen, die ItemDataBound/ItemCreated Ereignisse.

+0

Ich kann es nicht innerhalb meiner Paginierungsfunktion aufrufen, weil es ein Postback verursacht, und Postback löscht den Repeater. –

+0

ITemDatabound Ereignisse funktionieren für jedes Element, und ich möchte es für alle Elemente auf einmal tun. –