2010-04-05 38 views
5

我有一個Telerik的radgrid控件與包含一個複選框GridTemplateColumn,如下:遍歷行/複選框在radgrid控件

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

我想設置框被「選中」的基礎上讀出的值來自數據庫。我可以處理ItemDataBound事件並在每行綁定時讀取數據庫,但這會導致n查找。相反,我想處理DataBound,然後一次設置所有的值。因此,在該方法中,我想這樣的代碼:

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

那是不行的,因爲FindControl已不是的GridColumn的方法,而且不會產生複選框可迭代列表。遍歷模板列中複選框的正確方法是什麼?謝謝!

回答

16

Telerik的回來給我他們的答案論壇,如下:

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

希望這對人是有用的!

1

我有「的創建一個本地哈希表,現在使用否則

Private _GroupMembers As New Hashtable 

」同樣的問題..這是我做到了..

加載它在頁面加載 私人功能GetMembers()爲布爾

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 

「檢查包含 保護小組RadGrid2_ItemDataBound(BYVAL發件人爲對象,ByVa作爲Telerik.Web.UI.GridItemEventArgs)句柄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