1

リピーターにあるアイテムを、div と新しい div の 5 つの要素の後に取得したいと思います。

だから私が現在得ているのはこれです:

意見:

<ItemTemplate>
    <asp:HiddenField runat="server" ID="eventID" />
    <p><asp:CheckBox runat="server" ID="eventDateCheckbox" /></p>
    </div>
</ItemTemplate>

コードビハインド:

protected void DatesRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
    {
        var data = (Components.Models.GetDatesModel)e.Item.DataItem;

        var chk = (CheckBox)e.Item.FindControl("eventDateCheckbox");
        chk.Text = data.EventTimeBegin.ToString();

        var hfd = (HiddenField)e.Item.FindControl("eventID");
        hfd.Value = data.eventID.ToString();
    }
}

そして、私はそれをビューに次のように表示したいと思います:

<div class="column">
    <asp:HiddenField runat="server" ID="eventID" />
    <p><asp:CheckBox runat="server" ID="eventDateCheckbox" /></p>

    <asp:HiddenField runat="server" ID="eventID" />
    <p><asp:CheckBox runat="server" ID="eventDateCheckbox" /></p>

    <asp:HiddenField runat="server" ID="eventID" />
    <p><asp:CheckBox runat="server" ID="eventDateCheckbox" /></p>

    <asp:HiddenField runat="server" ID="eventID" />
    <p><asp:CheckBox runat="server" ID="eventDateCheckbox" /></p>

    <asp:HiddenField runat="server" ID="eventID" />
    <p><asp:CheckBox runat="server" ID="eventDateCheckbox" /></p>
</div>

<div class="column">
    <asp:HiddenField runat="server" ID="eventID" />
    <p><asp:CheckBox runat="server" ID="eventDateCheckbox" /></p>

    <asp:HiddenField runat="server" ID="eventID" />
    <p><asp:CheckBox runat="server" ID="eventDateCheckbox" /></p>

    <asp:HiddenField runat="server" ID="eventID" />
    <p><asp:CheckBox runat="server" ID="eventDateCheckbox" /></p>

    <asp:HiddenField runat="server" ID="eventID" />
    <p><asp:CheckBox runat="server" ID="eventDateCheckbox" /></p>

    <asp:HiddenField runat="server" ID="eventID" />
    <p><asp:CheckBox runat="server" ID="eventDateCheckbox" /></p>
</div>

<div class="column">
    <asp:HiddenField runat="server" ID="eventID" />
    <p><asp:CheckBox runat="server" ID="eventDateCheckbox" /></p>

    <asp:HiddenField runat="server" ID="eventID" />
    <p><asp:CheckBox runat="server" ID="eventDateCheckbox" /></p>

    <asp:HiddenField runat="server" ID="eventID" />
    <p><asp:CheckBox runat="server" ID="eventDateCheckbox" /></p>

    <asp:HiddenField runat="server" ID="eventID" />
    <p><asp:CheckBox runat="server" ID="eventDateCheckbox" /></p>

    <asp:HiddenField runat="server" ID="eventID" />
    <p><asp:CheckBox runat="server" ID="eventDateCheckbox" /></p>

    <asp:HiddenField runat="server" ID="eventID" />
    <p><asp:CheckBox runat="server" ID="eventDateCheckbox" /></p>            
</div>

どうすればこれを達成できますか? 前もって感謝します!

4

2 に答える 2

3

LiteralRepeater PreRender イベント、および%Operatorを組み合わせて使用​​します。

aspx コードは次のようになります。

<asp:Repeater ID="DatesRepeater" runat="server" OnItemDataBound="DatesRepeater_ItemDataBound" 
    OnPreRender="DatesRepeater_PreRender">
    <ItemTemplate>
        <asp:Literal ID="ltDivPrefix" runat="server"></asp:Literal>
        <asp:HiddenField runat="server" ID="eventID" />
        <p><asp:CheckBox runat="server" ID="eventDateCheckbox" /></p> 
        <asp:Literal ID="ltDivSuffix" runat="server"></asp:Literal>
    </ItemTemplate>
</asp:Repeater>

期待される結果は次のとおりです。

  1. のテキストは、n % 5 が 0 に等しい n 番目のアイテム用になります。それ以外の場合は空になりますltDivPrefix<div class="column">
  2. のテキストはltDivSuffix</div>n % 5 が 4 に等しい n 番目の項目、または n が最後のインデックスであり、それ以外の場合は空になります。


アイテムの総数はPreRenderイベントで取得できるため、Repeater アイテムをループして、アイテム インデックスに従って とltDivPrefixのテキストを設定します。ltDivSuffix

protected void DatesRepeater_PreRender(object sender, EventArgs e)
{
    for (int i = 0; i < DatesRepeater.Items.Count; i++)
    {
        Literal ltDivPrefix = (Literal)DatesRepeater.Items[i].FindControl("ltDivPrefix");
        Literal ltDivSuffix = (Literal)DatesRepeater.Items[i].FindControl("ltDivSuffix");

        if ((i) % 5 == 0)
        {
            ltDivPrefix.Text = @"<div class=""column"">";
        }

        if ((i % 5 == 4) || (i == DatesRepeater.Items.Count - 1))
        {
            ltDivSuffix.Text = "</div>";
        }
    }
}
于 2014-01-23T15:27:21.007 に答える
0

divテンプレートに を導入できない理由はありますか?

  <ItemTemplate>
     <div class="column">
       <asp:HiddenField runat="server" ID="eventID" />
       <p><asp:CheckBox runat="server" ID="eventDateCheckbox" /></p>
     </div>
  </ItemTemplate>
于 2014-01-23T15:27:34.317 に答える