Juice-UI: динамически создавать меню в коде позади
Я пытаюсь создать меню сока во время выполнения, когда страница загружается, но мне не везет. Это работает просто отлично, если я создаю меню во время разработки, но нужно создавать его во время выполнения. Любая помощь приветствуется! Вот код, который у меня есть до сих пор...
код C#:
private void BuildLoginMenu()
{
Juice.Menu jMenuContainer = new Juice.Menu();
Juice.MenuItem parentItem = new Juice.MenuItem();
parentItem.ID = "Parent1";
MenuTemplate p = new MenuTemplate("Parent");
parentItem.Content = p;
Juice.MenuItem childItem = new Juice.MenuItem();
childItem.ID = "Parent1";
MenuTemplate c = new MenuTemplate("Parent");
childItem.Content = c;
parentItem.Items.Add(childItem);
jMenuContainer.Items.Add(parentItem);
Placeholder1.Controls.Add(jMenuContainer);
}
}
вот класс MenuTemplate для справки:
public class MenuTemplate : ITemplate
{
private string _text;
public MenuTemplate(string text)
{
_text = text;
}
public void InstantiateIn(Control container)
{
LiteralControl l = new LiteralControl(_text);
container.Controls.Add(l);
}
}
1 ответ
На этот раз я отвечаю на свой собственный вопрос... То, что я нашел, было легче сделать, это избежать создания JuiceUI: Меню в коде позади. Вместо этого создайте неупорядоченный список HTML, используя CSS-файлы jQueryUI для стилизации списка. Поскольку jQueryUI является основой JuiceUI, у меня не было никаких проблем, чтобы заставить это работать. Вот мое объяснение, почему я пошел по этому пути: вы не можете отобразить серверные элементы управления в code-behind как строку и назначить выходные данные свойству div innerhtml, но вы можете отобразить html как строку в code-behind и назначить его свойство divh innerhtml - это позволяет мне динамически создавать меню. Ниже приведен код, который работает для меня.
HTML
<script type="text/javascript">
$(function () {
$("#menu").menu();
});
</script>
<div id="menuDiv" runat="server">
</div>
C#
str += "<ul id=\"menu\"> ";
//loop through each menuItem, build menu from top down.
foreach (MenuItem m in menuItems)
{
str += "<li>";
str += "<a href=\"#\">" + m.Title + "</a>";
str += "</li>";
}
str += "</ul>";
menuDiv.InnerHtml = str;