1

そのように構築されたリピーター「ステートメント」があります:

<asp:Repeater ID="Statements" runat="server"><ItemTemplate><ul>
    <li>
        <div>
            <asp:Label Text='<%#("Problem Statement: " + Eval("Statement"))%>' runat="server"></asp:Label></div>
        <div>
            <asp:Label Text='<%#("Goal: " + Eval("Goal"))%>' runat="server"></asp:Label></div>
        <asp:CheckBoxList ID="Objectives" runat="server" RepeatDirection="Horizontal" RepeatColumns="2">
        </asp:CheckBoxList>
    </li>
</ul>
</ItemTemplate>
</asp:Repeater>

チェックされたすべての項目を繰り返しから取得しようとしましたCheckBoxListが、これまでのところ運がありません。以下は無効なキャストエラーを示していますが、他の試みも失敗しました。LINQ を使用して、繰り返しリストからすべてのチェック項目を取得するにはどうすればよいですか?

Dim list = _
  (From c As Control In Me.FindControl("Statements").Controls _
  Where c.GetType() Is GetType(CheckBoxList) _
  Select c).ToList()

Dim selected = _
  From c As CheckBoxList In list.AsEnumerable() _
  Select c.Items.AsQueryable().Cast(Of ListItem).Select(Function(l) l.Selected = True)

前もって感謝します。

4

2 に答える 2

3

Statements リピーターの RepeaterItems をスピンスルーし、linq を使用して選択したすべてのチェックボックスを取得できます (AlternatingItem および Item タイプのみ)。

        Dim lstAllSelected As New List(Of ListItem)

        Statements.Items.ForEach(Sub(rpi As RepeaterItem)
                                     If rpi.ItemType = ListItemType.AlternatingItem OrElse rpi.ItemType = ListItemType.Item Then
                                         Dim lstNewItems As List(Of ListItem) = (From li As ListItem In CType(rpi.FindControl("Objectives"), CheckboxList).Items _
                                                                                 Where li.Selected).ToList()
                                         If Not lstNewItems Is Nothing AndAlso lstNewItems.Count > 0 Then
                                             lstAllSelected.AddRange(lstNewItems)
                                         End If
                                     End If
                                 End Sub)
于 2013-06-06T15:13:35.660 に答える
1

ListItemこれにより、各リピーター アイテムから選択された のリストが取得されます。

Dim selected = (From itm As RepeaterItem In Statements.Items
            From li As ListItem In DirectCast(itm.FindControl("Objectives"), CheckBoxList).Items
            Where li.Selected
            Select li).ToList
于 2013-06-06T15:47:30.960 に答える