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;
Другие вопросы по тегам