2010-04-05 10 views
5

Tôi có một Telerik RadGrid với một GridTemplateColumn có chứa một hộp kiểm, như sau:lặp qua hàng/hộp kiểm trong một RadGrid

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

tôi muốn thiết lập các hộp là "checked" dựa trên một giá trị đọc từ cơ sở dữ liệu. Tôi có thể xử lý sự kiện ItemDataBound và đọc cơ sở dữ liệu khi mỗi hàng bị ràng buộc, nhưng điều đó dẫn đến việc tìm kiếm n. Thay vào đó, tôi muốn xử lý DataBound, và sau đó đặt tất cả các giá trị cùng một lúc. Vì vậy, trong phương pháp đó, tôi muốn mã như thế này:

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

Điều đó không hiệu quả, vì FindControl không phải là phương thức của GridColumn, và nó sẽ không tạo danh sách các hộp kiểm có thể lặp lại được. Cách chính xác để lặp qua các hộp kiểm trong cột mẫu là gì? Cảm ơn!

Trả lời

16

Telerik đã trở lại với tôi trên các diễn đàn của họ với câu trả lời như sau:

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

Hy vọng điều này rất hữu ích cho một ai đó!

1

Tôi gặp cùng một vấn đề .. đây là làm thế nào tôi đã làm nó ..

'Tạo một Hashtable địa phương để sử dụng ngay bây giờ và khác

Private _GroupMembers As New Hashtable 

' Loaded nó lên trên tải trang cá nhân chức năng 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 for chứa bảo vệ người gửi Sub RadGrid2_ItemDataBound (ByVal Như Object, ByVa l e Như Telerik.Web.UI.GridItemEventArgs) Xử lý 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