62,072
社区成员
发帖
与我相关
我的任务
分享
DataView dv;
private DataView GetDataSource()
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("ID", typeof(Int32)));
dt.Columns.Add(new DataColumn("Name", typeof(String)));
dt.Columns.Add(new DataColumn("ParentID", typeof(Int32)));
DataRow dr = dt.NewRow();
dr[0] = 1;
dr[1] = "小张";
dr[2] = -1;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 2;
dr[1] = "小王";
dr[2] = 1;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 3;
dr[1] = "小李";
dr[2] = 1;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 4;
dr[1] = "小红";
dr[2] = 2;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 5;
dr[1] = "小青";
dr[2] = 2;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 6;
dr[1] = "小白";
dr[2] = 5;
dt.Rows.Add(dr);
return dt.DefaultView;
}
private DataView GetDataSourceEX()
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("ID", typeof(Int32)));
dt.Columns.Add(new DataColumn("Name", typeof(String)));
dt.Columns.Add(new DataColumn("ParentID", typeof(Int32)));
DataRow dr = dt.NewRow();
dr[0] = 1;
dr[1] = "小张";
dr[2] = -1;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 2;
dr[1] = "小王";
dr[2] = -1;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 3;
dr[1] = "小齐";
dr[2] = 1;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 4;
dr[1] = "小薛";
dr[2] = 1;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 5;
dr[1] = "小红";
dr[2] = 2;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 6;
dr[1] = "小青";
dr[2] = 3;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 7;
dr[1] = "小白";
dr[2] = 5;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 8;
dr[1] = "小黄";
dr[2] = 5;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 9;
dr[1] = "小绿";
dr[2] = 8;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 10;
dr[1] = "小蓝";
dr[2] = 4;
dt.Rows.Add(dr);
return dt.DefaultView;
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dv = GetDataSource();
//dv = GetDataSourceEX();
dv.RowFilter = "ParentID=-1";
rp.DataSource = dv;
rp.DataBind();
}
}
private string Recursion(object ID)
{
dv.RowFilter = string.Format("ParentID={0}", ID);
DataTable dt = dv.ToTable();
if (dt.Rows.Count == 0)
{
return "";
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < dt.Rows.Count; i++)
{
if (i == 0)
{
sb.Append("<ul>");
}
sb.AppendFormat("<li>{0}({1}){2}</li>", dt.Rows[i][1].ToString(), dt.Rows[i][0].ToString(), Recursion(dt.Rows[i][0]));
if (i == dt.Rows.Count - 1)
{
sb.Append("</ul>");
}
}
return sb.ToString();
}
protected string GetHTMLByID(object objID)
{
if (objID == null)
{
return "";
}
dv = GetDataSource();
return Recursion(objID);
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:Repeater ID="rp" runat="server">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<%#string.Format("{0}({1})",Eval("Name"),Eval("ID"))%>
<asp:Literal ID="lit" runat="server" Text='<%#GetHTMLByID(Eval("ID")) %>'></asp:Literal>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
</form>
</body>
</html>