首页 文章

迭代RadGrid中的行/复选框

提问于
浏览
5

我有一个带有GridTemplateColumn的Telerik RadGrid,其中包含一个复选框,如下所示:

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

我想根据从数据库读取的值将框设置为"checked" . 我可以处理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的方法,它不会生成复选框的可迭代列表 . 迭代模板列中的复选框的正确方法是什么?谢谢!

2 回答

  • 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 sender As Object,ByVal e As 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
    

相关问题