我有两个标签作为Sitecore.Web.UI.WebControls.Link和一个链接。现在当页面打开时,我想专注于第一个页面。我写了这段代码,但看起来只是第二次击中第0个索引。所以我将两个标签作为选定项目。这是代码:
protected void rptTab_ItemBound(Object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Item i = e.Item.DataItem as Item;
Link hlTabLink;
HtmlControl liHTML;
liHTML = e.Item.FindControl("liTabTest") as HtmlControl;
hlTabLink = e.Item.FindControl("hlTabLink") as Link;
hlTabLink.Target = Sitecore.Links.LinkManager.GetItemUrl(i);
hlTabLink.DataSource = i.Paths.FullPath;
hlTabLink.Field = "Title";
String liContainerId;
switch (hlTabLink.TabIndex) //Switch case statements for the tab navigation.
{
case 0:
liContainerId = "tab-label TabbedPanelsTabSelected";
liHTML.Attributes.Add("class", liContainerId);
break;
case 1:
liContainerId = "tab-label TabbedPanelsTabSelected";
hlTabLink.CssClass = "tab-label TabbedPanelsTabSelected";
break;
case 2:
liContainerId = "tab-label last";
hlTabLink.Attributes.Add("class", liContainerId);
break;
}
}
案例0击中2次。如您所见,标签位于转发器中。这是标记:
<asp:Repeater ID="rptTab" runat="server" OnItemDataBound="rptTab_ItemBound">
<ItemTemplate>
<li id= "liTabTest" runat = "server">
<a>
<sc:Link ID = "hlTabLink" Field = "scTabLink" runat ="server"></sc:Link>
</a>
</li>
</ItemTemplate>
</asp:Repeater>
答案 0 :(得分:1)
听起来像TabIndex还没有填充,可能是由于数据绑定在dom更新之前完成。可能很容易成为事件序列和更新等问题。否则,TabIndex可能永远不会被填充?
您是否在稍后阶段检查了该物业?
最后,在绑定所有项目时,是否还有其他事件可以挂钩哪个触发器?使用当前代码,您必须将第n个项目硬编码为最后一个项目(样本中的2个),这在以后添加其他项目时很容易忘记。如果你能找到这样的事件,你可以通过索引for循环遍历项目,并让所有项目知道长度是多少,这意味着你不必硬编码那个值。