我想使用GroupTemplate将项目列表分成组。但是,我需要按顺序编号每个组,以便我可以链接到它们并实现一些JS分页。我绑定到IEnumerable
这是一些伪代码。我希望输出看起来像这样:
<a href="#group1">Go to Group 1<a>
<a href="#group2">Go to Group 2<a>
<a href="#group3">Go to Group 3<a>
<ul id="group1">
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ul>
<ul id="group2">
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ul>
<ul id="group3">
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ul>
使用GroupTemplate和ItemTemplate吗?在ListView中这很容易吗?
<asp:ListView ID="lv" runat="server" GroupPlaceholderID="groupPlaceholder">
<LayoutTemplate>
<asp:PlaceHolder ID="groupPlaceholder" runat="server"></asp:PlaceHolder>
</LayoutTemplate>
<GroupTemplate>
<ul id="<!-- group-n goes here -->">
<asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder>
</ul>
</GroupTemplate>
<ItemTemplate>
<li>Item</li>
</ItemTemplate>
</asp:ListView>
我可以从数据源和基本数学的顶部获得组的数量,但是如何在模板中获得 id =“groupN”数字?
答案 0 :(得分:4)
我不认为你可以使用DataBind的id,所以我可能要么使用隐藏字段,让JQuery计算它们,要么使用CssClass。您可以使用Container.DataItemIndex
来获取您的电话号码。
编辑:只需将ul
更改为runat =“server”,ASP.NET就会以臭名昭着的INamingContainer格式为您生成一个唯一的ID。这也将包括一个索引,虽然它类似于lv_ctrl0_group
,并且是一个实现细节。
您可以将处理程序挂钩到ul
的Init事件并向其附加一个数字,使其类似于lv_ctrl0_group1
。我不认为你可以很容易地摆脱前面的INamingContainer的东西,这可能会破坏任何IPostDataHandler控件。
<script runat="server">
void Group_Init(object sender, EventArgs e) {
((Control)sender).ID += groupId++.ToString();
}
int groupId = 0;
</script>
<asp:ListView id="lv" runat="server" GroupItemCount="3">
<LayoutTemplate>
<asp:PlaceHolder ID="groupPlaceHolder" runat="server" />
</LayoutTemplate>
<GroupTemplate>
<ul id="group" runat="server" oninit="Group_Init">
<asp:PlaceHolder ID="itemPlaceHolder" runat="server"/>
</ul>
</GroupTemplate>
<ItemTemplate>
<li>Item</li>
</ItemTemplate>
</asp:ListView>
答案 1 :(得分:1)
在您的aspx文件中:
<GroupTemplate>
<ul id='<%# "group"+GroupNumber %>'>
<asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder>
</ul>
</GroupTemplate>
在您的代码中(假设C#):
int _GroupNumber=0;
protected string GroupNumber
{
get { return (++_GroupNumber).ToString(); }
}
答案 2 :(得分:1)
Keltex上面的解决方案可以进行一些小改动;使用&lt;%= 代替&lt;%#,
&lt;%#无效,因为GroupTemplate不支持数据绑定