0

我试图在页面加载时在运行时构建一个juiceui-menu,但我没有任何运气。如果我在设计时构建菜单但需要在运行时构建它,它工作得很好。任何帮助将非常感激!这是我到目前为止的代码......

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);
           }
       }
4

1 回答 1

0

这次我正在回答我自己的问题......我发现更容易做的是避免在代码隐藏中构建 JuiceUI:Menu。而是使用 jQueryUI CSS 文件构建一个 HTML 无序列表来设置列表样式。由于 jQueryUI 是 JuiceUI 的骨干,我可以毫无问题地让它工作。这是我走这条路的原因:您不能将代码隐藏中的服务器控件呈现为字符串并将输出分配给 div 的 innerhtml 属性,但您可以将 html 呈现为代码隐藏中的字符串并将其分配给一个 div 的 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;
于 2013-01-03T20:40:10.580 回答