如果是第一个或最后一个,更改转发器li项目类

gru*_*ber 31 .net c# asp.net

我正在使用转发器来创建动态ul li列表

是否可以控制班级项目是第一个还是最后一个?

就像是:

class="<%# if(Container.ItemIndex == 0)
   {
        class = ... 
   }
   ) %>"
Run Code Online (Sandbox Code Playgroud)

顺便说一下它的真正含义:<%#在ASP.NET中

<%#和之间有什么区别<%=

Ale*_*lex 56

很容易确定该项是否为first(Container.ItemIndex == 0),但要确定该元素是否为last,您必须使用将使用数据绑定初始化的自定义属性:

protected int ItemCount { get; set; }
Run Code Online (Sandbox Code Playgroud)

这是一个转发器示例:

<asp:Repeater runat="server" ID="repeater">
    <HeaderTemplate>
        <ul>
    </HeaderTemplate>
    <ItemTemplate>
        <li class="<%# GetItemClass(Container.ItemIndex) %>">
            <%# Container.DataItem %>
        </li>
    </ItemTemplate>
    <FooterTemplate>
        </ul>
    </FooterTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)

这是一个数据绑定的例子:

public override void DataBind()
{
    var data = new string[] { "first", "second", "third" };
    this.ItemCount = data.Length;

    repeater.DataSource = data;
    repeater.DataBind();
}
Run Code Online (Sandbox Code Playgroud)

最后一个辅助方法:

protected string GetItemClass(int itemIndex)
{
    if (itemIndex == 0)
        return "first";
    else if (itemIndex == this.ItemCount - 1)
        return "last";
    else
        return "other";
}
Run Code Online (Sandbox Code Playgroud)

这将产生:

<ul>
    <li class="first">
        first
    </li>
    <li class="other">
        second
    </li>
    <li class="last">
        third
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)


nel*_*stu 40

我通常使用以下内容:

<asp:Repeater ID="rptItems" runat="server" ViewStateMode="Disabled">
  <ItemTemplate>
    <li<%# Container.ItemIndex == ((IList)((Repeater)Container.Parent).DataSource).Count-1 ? " class='last'" : ""%>>
...
    </li>
  </ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)

  • 来自查克诺里斯的批准邮票,你还想要什么:)谢谢,帮助了我! (2认同)
  • 如果转发器的源是DataTable <%#Container.ItemIndex ==((System.Data.DataTable)((Repeater)Container.Parent).DataSource).Rows.Count - 1?"":"<li class ='divider'> </ li>"%> (2认同)

Mun*_*Mun 6

如果可能的话,我建议使用像jQuery这样的东西,因为它可以很容易地实现这种类型的功能.例如,你可以有这样的东西:

<asp:Repeater id="MyRepeater" runat="server">
    <HeaderTemplate><table class="MyRepeater"></HeaderTemplate>
    <FooterTemplate></table></FooterTemplate>
    <ItemTemplate><tr><td>My Data</td></tr></ItemTemplate>
</asp:Repeater>

$("table.MyRepeater tr:last").attr("class", "last");
Run Code Online (Sandbox Code Playgroud)