2010-04-05 37 views
5

Tengo un Telerik RadGrid con un GridTemplateColumn que contiene una casilla de verificación, de la siguiente manera:iterar sobre las filas/casillas de verificación en un RadGrid

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

quiero fijar la caja a ser "marcado" se basa en un valor leído de la base de datos. Pude manejar el evento ItemDataBound y leer la base de datos cuando cada fila está vinculada, pero eso da como resultado n búsquedas. En cambio, quiero manejar DataBound y luego establecer todos los valores a la vez. Por lo tanto, en ese método, quiero código como este:

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

eso no funciona, porque FindControl no es un método de GridColumn, y no va a generar una lista de iterable de las casillas de verificación. ¿Cuál es la forma correcta de iterar a través de las casillas de verificación en la columna de la plantilla? ¡Gracias!

Respuesta

16

Telerik volvió a mí en sus foros con la respuesta, de la siguiente manera:

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

Hope esto es útil para alguien!

1

estoy teniendo el mismo problema .. esto era cómo lo hice ..

'Se creó una tabla hash local para utilizar ahora y por otra parte

Private _GroupMembers As New Hashtable 

' cargué al cargar la página privada GetMembers de función() 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 

'Buscar contiene protegida de remitente RadGrid2_ItemDataBound (ByVal como objeto, ByVa l e As Telerik.Web.UI.GridItemEventArgs) Maneja 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