【问题标题】:Iterate over rows/checkboxes in a RadGrid迭代 RadGrid 中的行/复选框
【发布时间】:2011-02-04 14:55:07
【问题描述】:

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

<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 的方法,它不会生成复选框的可迭代列表。遍历模板列中的复选框的正确方法是什么?谢谢!

【问题讨论】:

    标签: asp.net foreach telerik radgrid


    【解决方案1】:

    Telerik 在他们的论坛上回复了我,答案如下:

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

    希望这对某人有用!

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题..我就是这样做的..

      '创建了一个本地哈希表以供现在和其他情况使用

      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
      

      '检查包含 Protected Sub 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-27
        • 2010-11-25
        • 1970-01-01
        • 1970-01-01
        • 2014-06-05
        相关资源
        最近更新 更多