Перебирать строки / флажки в RadGrid - PullRequest
5 голосов
/ 06 апреля 2010

У меня есть 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, и он не будет генерировать итеративный список флажков. Как правильно перебирать флажки в столбце шаблона? Спасибо!

Ответы [ 2 ]

16 голосов
/ 07 апреля 2010

Telerik ответил мне на своих форумах с ответом, следующим образом:

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

Надеюсь, это кому-нибудь пригодится!

1 голос
/ 09 июня 2010

У меня та же проблема .. я так и сделал ..

'Создана локальная хеш-таблица для использования сейчас и в противном случае

Private _GroupMembers As New Hashtable

'Загрузил его при загрузке страницы Частная функция 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

'Проверить наличие Защищенный подчиненный RadGrid2_ItemDataBound (ByVal отправитель как объект, ByVal и 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
...