代碼如下:
private string detailHtml = "";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.Add("id");
dt.Columns.Add("name");
dt.Columns.Add("val");
dt.Columns.Add("upid");
dt.Rows.Add("1", "2009年", "2009年", "0");
dt.Rows.Add("2", "2009Q1", "2009Q1", "1");
dt.Rows.Add("3", "2009Q2", "2009Q2", "1");
// dt.Rows.Add("4", "2009Q3", "2009Q3", "1");
dt.Rows.Add("5", "200901", "200901", "3");
dt.Rows.Add("6", "2010年", "2010年", "0");
//dt.Rows.Add("7", "2010Q1", "2010Q1", "6");
//dt.Rows.Add("8", "201001", "201001", "7");
dt.Rows.Add("9", "2009001", "2009001", "5");
dt.AcceptChanges();
jsTree.InnerHtml = GetTreeHtml(dt);
}
}
private string GetTreeHtml(DataTable dt)
{
string html = "<ul>{0}</ul>";
DataView dv = new DataView(dt);
dv.RowFilter = "upid=0";
string roothtml = "";
foreach (DataRowView dr in dv)
{
roothtml += "<li value='" + dr["val"].ToString() + "' style='margin-left:-28px;'><input type='checkbox' />"
+ dr["name"].ToString() + GetDetailHtml(dt, dr["id"].ToString()) + "</li>";
detailHtml = "";
}
return string.Format(html, roothtml);
}
private string GetDetailHtml(DataTable dt ,string up_id)
{
DataView dv = new DataView(dt);
dv.RowFilter = "upid=" + up_id;
string html = "";
foreach (DataRowView dr in dv)
{
detailHtml += "<li value='" + dr["val"].ToString() + "' style='margin-left:-28px;'><input type='checkbox' />"
+ dr["name"].ToString() + "</li>";
GetDetailHtml(dt, dr["id"].ToString());
}
html = "<ul>" + detailHtml + "</ul>";
return html;
}
運行的結果如下:
2009年
2009Q1
2009Q2
200901
2009001
2010年
正確的結果如下:
2009年
2009Q1
2009Q2
200901
2009001
2010年
不知道怎麼修改,哪位大俠知道的告訴我一下,謝謝!
在此新春佳節來臨之際,祝博客園兄弟姐妹新年快樂,萬事如意!
1 protected void Page_Load(object sender, EventArgs e)
2 {
3 if (!IsPostBack)
4 {
5 DataTable dt = new DataTable();
6 dt.Columns.Add("id");
7 dt.Columns.Add("name");
8 dt.Columns.Add("val");
9 dt.Columns.Add("upid");
10 dt.Rows.Add("1", "2009年", "2009年", "0");
11 dt.Rows.Add("2", "2009Q1", "2009Q1", "1");
12 dt.Rows.Add("3", "2009Q2", "2009Q2", "1");
13 // dt.Rows.Add("4", "2009Q3", "2009Q3", "1");
14 dt.Rows.Add("5", "200901", "200901", "3");
15 dt.Rows.Add("6", "2010年", "2010年", "0");
16 //dt.Rows.Add("7", "2010Q1", "2010Q1", "6");
17 //dt.Rows.Add("8", "201001", "201001", "7");
18 dt.Rows.Add("9", "2009001", "2009001", "5");
19 dt.AcceptChanges();
20 jsTree.Text = GetTreeHtml(dt,0);
21 }
22 }
23
24 private string GetTreeHtml(DataTable dt,int pid)
25 {
26 string html = "<ul>{0}</ul>";
27 DataView dv = new DataView(dt);
28 dv.RowFilter = "upid="+pid.ToString();
29 string roothtml = "";
30 foreach (DataRowView dr in dv)
31 {
32 roothtml += "<li value='" + dr["val"].ToString() + "' style='margin-left:-28px;'><input type='checkbox' />"
33 + dr["name"].ToString() + GetTreeHtml(dt, Convert.ToInt32(dr["id"])) + "</li>";
34 detailHtml = "";
35 }
36 return string.Format(html, roothtml);
37 }
我这里的jstree是一个Literal
你的GetTreeHtml和GetDetailHtm,l我给你合并成一个GetTreeHtml
感觉太麻烦了,直接用Asp.net Tree控件不好吗