我需要使用以下模式构建一个id为菜单的树。 树的数据来自数据库,该数据库返回具有多个数据表的数据集。 任何人都可以帮助如何使用字符串生成器这样做? 以下是如何安排项目的示例;
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<div id="tree" class="tree" valign="left" runat="server">
<ul id='ctlTreeView_1'>
<li id='ctlTreeView_1_1'><label title="someUrl" ondblclick='javascript:dblClick(this)'>Label list</label>
<ul id='ctlTreeView_1_1_1'>
<li id='ctlTreeView_1_1_1_1'><label title="label1" ondblclick='javascript:dblClick(this)'>Label1</label></li>
<li id='ctlTreeView_1_1_1_2'><label title="label2" ondblclick='javascript:dblClick(this)'>Label2</label></li>
</ul>
</li>
</ul>
</div>
</body>
</html>
答案 0 :(得分:0)
在您的情况下,我会将StringBuilder
与string.Format
结合使用,以使用占位符将ID放入html代码中。
只需创建一个字符串构建器:
var builder = new StringBuilder()
并追加所有行:
builder.AppendLine("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
// ...
builder.AppendLine("</html>");
如果您想在标记中放置一些ID,请使用:
builder.AppendLine(string.Format("<ul id='{0}'>", "YOUR_ID"));
// ....
builder.AppendLine("</ul>");
如果要迭代db-result,可以将这些行放在循环中。
稍后您可以简单地使用.ToString()
来获取完整的html代码:
string htmlCode = builder.ToString();
希望这有帮助。
修改强>
由于您使用的是asp.net,因此您也可以使用asp.net classes
来构建html控件。请看一下HtmlGenericControl。也许这也是一种选择。
答案 1 :(得分:0)
最好使用StringBuilder
标记声明根ul
控件,而不是使用runat="server"
,并使用子控件从代码隐藏中填充它,如下例所示:
.aspx文件:
<ul id="ctlTreeView_1" runat="server" />
.cs文件:
protected void Page_Load(object sender, EventArgs e) {
var li_1 = new HtmlGenericControl("li") {
InnerText = "first item",
ID = "li_1"
};
ctlTreeView_1.Controls.Add(li_1);
var ul_2 = new HtmlGenericControl("ul") {
ID = "ul_2"
};
li_1.Controls.Add(ul_2);
var li_2_1 = new HtmlGenericControl("li") {
InnerText = "first inner item",
ID = "li_2_1"
};
ul_2.Controls.Add(li_2_1);
}