如何在转发器中创建三列div?

时间:2012-02-15 15:39:08

标签: c# asp.net repeater modulo

如何在转发器内创建N(例如3)列div输出?例如,如果我试图在我的转发器中呈现的项目是从1到6的数字,我想看到以下输出:

<div><span>1</span><span>2</span><span>3</span></div>
<div><span>4</span><span>5</span><span>6</span></div>

我认为他与mod运算符(%)有关,但我不确定如何做到这一点。

2 个答案:

答案 0 :(得分:1)

class ModContext
{
    public ModContext(int first, int second)
    {
        this.First = first;
        this.Second = second;
        this.Result = this.First % this.Second;
    }

    public int First { get; private set; }

    public int Second { get; private set; }

    public int Result { get; private set; }
}

IList<ModContext> items = new List<ModContext>
    {
            new ModContext(10, 20),
            new ModContext(30, 40)
    };

this.repeater.DataSource = items;
this.repeater.DataBind();

ASPX:

<asp:Repeater id="repeater" runat="server">
  <HeaderTemplate>
     <div>
  </HeaderTemplate>
  <ItemTemplate>
     <span><%# DataBinder.Eval(Container.DataItem, "Result") %></span>
     <span><%# DataBinder.Eval(Container.DataItem, "First") %></span>
     <span><%# DataBinder.Eval(Container.DataItem, "Second") %></span>
   </ItemTemplate>
   <FooterTemplate>
     </div>
   </FooterTemplate>
</asp:Repeater>

答案 1 :(得分:0)

我多年没有使用中继器,所以我在这里走出困境,但我认为这样的事情应该有效:

  <ItemTemplate>
  <% if(Container.ItemIndex % 3 == 0) {%> <div> <% } %}
  <span><%# DataBinder.Eval(Container.DataItem, "Result") %></span>
  <% if(Container.ItemIndex % 3 == 2) {%> </div> <% } %}
  </ItemTemplate>