我正在使用转发器来创建动态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)
如果可能的话,我建议使用像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)
| 归档时间: |
|
| 查看次数: |
50403 次 |
| 最近记录: |