2010-04-05 9 views
5

ich ein Telerik RadGrid mit einem GridTemplateColumn haben, die eine Checkbox enthält, wie folgt:Iterate über Zeilen/Kontrollkästchen in einem RadGrid

<telerik:GridTemplateColumn HeaderText="MINE" UniqueName="MyTemplateColumn"> 
    <ItemTemplate> 
      <asp:CheckBox id="MyCheckBox" runat="server"></asp:CheckBox> 
    </ItemTemplate> 
</telerik:GridTemplateColumn> 

ich die Box sein „checked“ basierend auf einem Wert festlegen möchten lesen aus der Datenbank. Ich könnte das ItemDataBound-Ereignis behandeln und die Datenbank lesen, wenn jede Zeile gebunden ist, aber das führt zu n Suchvorgänge. Stattdessen möchte ich DataBound behandeln und dann alle Werte auf einmal festlegen. Also, in diesem Verfahren möchte ich Code wie folgt:

// read all values from database first, then... 
foreach(var chkbox in MyRadGrid.MasterTableView.Columns.FindByUniqueName("MyTemplateColumn").FindControl("MyCheckBox")) { 
    chkbox.Checked = oneValue; 
} 

, das nicht funktioniert, weil Findcontrol keine Methode Gridcolumn ist, und es wird nicht eine iterable Liste der Kontrollkästchen erzeugen. Was ist der richtige Weg, um die Checkboxen in der Template-Spalte zu durchlaufen? Vielen Dank!

Antwort

16

Telerik bekam auf ihren Foren mit der Antwort auf mich zurück, wie folgt:

foreach (GridDataItem item in MyRadGrid.MasterTableView.Items) 
{ 
    CheckBox chk = (CheckBox)item.FindControl("MyCheckBox"); 
    // Set the value here 
} 

Hope this für jemanden nützlich ist!

1

ich das gleiche Problem habe .. das war, wie ich es tat ..

‚eine lokale hashtable Erstellt jetzt verwenden und sonst

Private _GroupMembers As New Hashtable 

‘ Loaded es auf Seite Last bis Privat Funktion GetMembers() As Boolean

Try 

     Dim da As New DataAccess 
     Dim ht As New Hashtable 
     Dim i As Int16 = 0 

     ht.Add("CAC", Session("cac")) 
     ht.Add("GroupID", _GroupID) 
     If da.GetData("rap_spGetGroupMemberList", ht) = True Then 
      If da.SQLDataRows.HasRows Then 
       While da.SQLDataRows.Read() 
        i = i + 1 
        _GroupMembers.Add(i, da.SQLDataRows("UserID")) 
       End While 
      End If 
      da.SQLDataRows.Dispose() 
     End If 

     da = Nothing 

    Catch ex As Exception 
     Console.Write(ex.Message) 
    End Try 
End Function 

‚Check für enthält Protected Sub RadGrid2_ItemDataBound (ByVal Absender als Gegenstand, ByVa l e wie Telerik.Web.UI.GridItemEventArgs) Handles RadGrid2.ItemDataBound

Try 

     If e.Item.IsDataBound Then 
      If Not e.Item.DataItem("UserID") Is Nothing Then 
       If Not IsDBNull(e.Item.DataItem("UserID")) Then 
        Dim UserID As Long = e.Item.DataItem("UserID") 
        If _GroupMembers.ContainsValue(UserID) Then 
         e.Item.Selected = True 
        End If 
       End If 
      End If 
     End If 

    Catch ex As Exception 
     Console.Write(ex.Message) 
    End Try 
End Sub