Существует два разных навигационных меню на странице в их собственных отдельных пользовательских настройках. Элементы меню в двух меню могут перемещаться на одни и те же страницы. В топменю есть анимация jQuery, а влево нет.Зарегистрируйте, какой якорный тэг сделал обратную передачу?
Вопрос в том, как я могу получить, какой якорный тэг в меню навигации сделал обратную передачу, когда тег привязки находится в ретрансляторе, а ретранслятор находится в usercontrol (метки привязки динамически создаются). Проблема заключается в том, что topmenu usercontrol codebehind запускается и устанавливает некоторые значения для скрытых полей, поэтому анимация jQuery будет корректно работать в верхнем меню, но при нажатии левого меню она не должна запускаться и устанавливать скрытые поля в коде верхнего списка. Поэтому мне нужно выяснить, как различать два меню.
Вот ретранслятор разметка:
<asp:Repeater runat="server" ID="RightSide">
<HeaderTemplate><ul></HeaderTemplate>
<ItemTemplate>
<li data-type="<%# ((Item)Container.DataItem).HasChildren ? "dropdown" : "link" %>" class="<%# ((Item)Container.DataItem).HasChildren ? "dropdown" : "link" %>">
<a href='<%# GetLink(((Item)Container.DataItem),"MenuLink") %>'><%#((Item)Container.DataItem)["MenuTitle"] %></a>
</li>
</ItemTemplate>
<FooterTemplate></ul></FooterTemplate>
</asp:Repeater>
TopMenu .cs код:
public partial class TopMenu
{
private ID _homeId = new ID("{110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9}");
protected void Page_Load(object sender, EventArgs e)
{
RightSide.DataSource = GetMultiList("Right side", RootItem);
RightSide.DataBind();
***HERE I NEED TO MAKE THE CHECK.
So the code below should only run if the postback came from the topmenu***
var sectionItem = GetAncestorOrDefault(CurrentItem);
Sitecore.Data.Database context = Sitecore.Context.Database;
Sitecore.Data.Items.Item homeItem = context.GetItem("/sitecore/content/home");
List<Item> items = new List<Item>();
Sitecore.Data.Fields.MultilistField multilistField = homeItem.Fields["Right Side"];
foreach (string id in multilistField)
{
Sitecore.Data.Items.Item multiItem = Sitecore.Context.Database.Items.GetItem(id);
if (multiItem.HasChildren)
{
items.Add(multiItem);
}
}
foreach (Item item in items)
{
if (item.Name.Equals(sectionItem.Name))
{
hiddenAttr.Value = sectionItem.Name;
break;
}
else
{
hiddenAttr.Value = String.Empty;
}
}
}
}
Я попытался с EventTarget, но всегда пустой, а также со скрытым полем, значение которого всегда «» в коде. У меня нет идей ...
При необходимости отправьте больше кода.
Заранее благодарен!
Орвар
вы пытались __doPostBack ?? – Ankit
Я попробую и вернусь к вам. Благодаря! –
@Ankit Это не работает. Я получаю uncaught typeerror: невозможно прочитать свойство '__ eventtarget undefined. Я подозреваю, что это связано с тем, что мой якорный тэг находится в репитере. Я не уверен, где я должен поставить свою функцию __doPostBack ... –