2010-04-05 10 views
5

J'ai un RadGrid Telerik avec un GridTemplateColumn qui contient une case à cocher, comme suit:itérer sur des lignes/cases à cocher dans un RadGrid

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

Je veux mettre la boîte à être « vérifiée » basée sur une valeur lue de la base de données. Je pourrais gérer l'événement ItemDataBound et lire la base de données lorsque chaque ligne est liée, mais cela aboutit à des recherches n. Au lieu de cela, je veux gérer DataBound, puis définir toutes les valeurs à la fois. Ainsi, dans cette méthode, je veux code comme ceci:

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

qui ne fonctionne pas, car FindControl est pas une méthode de GridColumn, et il ne génère pas une liste itérables des cases à cocher. Quelle est la bonne façon de parcourir les cases à cocher dans la colonne modèle? Merci!

Répondre

16

Telerik m'a donné un retour sur leurs forums avec la réponse, comme suit:

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

Espérons que cela est utile pour quelqu'un!

1

Je suis le même problème .. voilà comment je l'ai fait ..

« créé un Hashtable local à utiliser maintenant et autrement

Private _GroupMembers As New Hashtable 

» Loaded vers le haut de la page charge privée fonction 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 

« Vérifier contient protégé sous RadGrid2_ItemDataBound (ByVal expéditeur comme objet, ByVa l e As Telerik.Web.UI.GridItemEventArgs) Gère 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 
Questions connexes