0

以下のリピーターアイテムがあります。

<asp:Repeater ID="RptLeaveRequests" runat="server" 
        onitemdatabound="RptLeaveRequests_ItemDataBound">
<ItemTemplate>
    <table id="tableItem" runat="server">
        <tr>
                <td style="width: 100px;">
                    <asp:Label ID="lblDate" runat="server" Text='<%#Eval("Date", "{0:dd/M/yyyy}") %>'></asp:Label>
                </td>
                <td style="width: 100px;">
                    <asp:Label ID="lblHours" runat="server" Text='<%#Eval("Hours") %>'></asp:Label>
                </td>
                <td style="width: 200px;">
                    <asp:Label ID="lblPeriod" runat="server" Text='<%#Eval("AMorPM") %>'></asp:Label>
                </td>
                <td style="width: 200px; font-size:10px;">
                    <asp:Label ID="lblNote" runat="server" Text='<%#Eval("Note") %>'></asp:Label>
                </td>
                <td style="50px">
                    <asp:RadioButtonList ID="rbtVerified" runat="server" >
                        <asp:ListItem Value="1">Accept</asp:ListItem>
                        <asp:ListItem Value="2">Reject</asp:ListItem>
                    </asp:RadioButtonList>
                </td>
                <td>
                    <asp:TextBox ID="txtNotes" runat="server" ></asp:TextBox>
                </td>
            </tr>
    </table>
</ItemTemplate>
</asp:Repeater>

ページの読み込み時にリピーターをバインドしています

else if(Convert.ToInt32(Session["UserLevel"]) != 0 && Convert.ToInt32(Session["UserLevel"]) < 151)
{
       RptLeaveRequests.DataSource = newLeaveLogic().GetManagerUnverifiedLeaveRequests(Convert.ToInt32(Context.User.Identity.Name));
        RptLeaveRequests.DataBind();
        hasRequests = true;
}

次に、以下のメソッドで DataTable を返す GetManagerUnferifiedLeaveRequests によって返される個別のユーザーごとに Repeater アイテムをグループ化する方法を示します。

protected void RptLeaveRequests_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
       if (hasRequests)
       {
             //grouping
       }
}
4

1 に答える 1

1

考えられる解決策は 2 つあります。

1) ネストされたリピーターを使用する:

<asp:Repeater ID="RptGroups" runat="server" onitemdatabound="RptGroups_ItemDataBound">
    <ItemTemplate>
        <asp:Repeater ID="RptLeaveRequests" runat="server"  onitemdatabound="RptLeaveRequests_ItemDataBound">
            <ItemTemplate>
                ...
            </ItemTemplate>
        </asp:Repeater>
    </ItemTemplate>
</asp:Repeater>

DataList2)グループに単一のリピーターを使用し、アイテムのリストの例または他のコントロールを使用して各グループをレンダリングします。

この場合、ここでグループのリストをデータソースにバインドします。

 RptLeaveRequests.DataSource = itemsGroups;
 RptLeaveRequests.DataBind();

ここでグループ項目のリストをバインドします。

protected void RptLeaveRequests_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
      //bind here list of group items
}

私は2番目のバージョンを好むでしょう。

于 2013-08-05T13:27:59.710 に答える