我试图在页面加载时在运行时构建一个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);
}
}发布于 2013-01-04 04:40:11
这次我是在回答我自己的问题...我发现更容易做的是避免在代码隐藏中构建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;https://stackoverflow.com/questions/14124635
复制相似问题