private void BindTreeView()
{
UnitInfo bUnitInfo = new UnitInfo();
DataSet ds = bUnitInfo.GetUnitInfo();
if (ds != null && ds.Tables[0].Rows.Count > 0)
{
bool HasAddedLast = true; ;
string strDs = "<?xml version='1.0' encoding='GB2312'?>";
for (int i = 1; i < ds.Tables[0].Rows.Count; i++)
{
strDs += "<a Name='" + ds.Tables[0].Rows[i-1][1].ToString() + "' TID='" + ds.Tables[0].Rows[i-1][0].ToString() + "'>";
for (int j = i; j < ds.Tables[0].Rows.Count; j++)
{
i = j;
if (ds.Tables[0].Rows[j-1]["Path"].ToString().Length == ds.Tables[0].Rows[j]["Path"].ToString().Length)
{
strDs += "</a><a Name='" + ds.Tables[0].Rows[j][1].ToString() + "' TID='" + ds.Tables[0].Rows[j][0].ToString() + "'>";
}
else if (ds.Tables[0].Rows[j -1]["Path"].ToString().Length < ds.Tables[0].Rows[j]["Path"].ToString().Length)
{
strDs += "<a Name='" + ds.Tables[0].Rows[j][1].ToString() + "' TID='" + ds.Tables[0].Rows[j][0].ToString() + "'>";
}
else
{
if (i==ds.Tables[0].Rows.Count-1)
{
HasAddedLast = false;
}
break;
}
}
int nCount = 0;
nCount = System.Math.Abs(ds.Tables[0].Rows[i - 1]["Path"].ToString().Length - ds.Tables[0].Rows[i]["Path"].ToString().Length) / 5 + 1;
for (int j = 0; j < nCount; j++)
{
strDs += "</a>";
}
if ((i == ds.Tables[0].Rows.Count - 1) && HasAddedLast==false)
{
strDs += strDs += "<a Name='" + ds.Tables[0].Rows[i][1].ToString() + "' TID='" + ds.Tables[0].Rows[i][0].ToString() + "'>";
for (int k = 0; k < (ds.Tables[0].Rows[i]["Path"].ToString().Length/5-1); k++)
{
strDs += "</a>";
}
}
}
strDs += "</a>";
XmlDataSource xds = new XmlDataSource();
xds.ID = "XDS";
xds.Data = strDs;
TreeView1.DataSource = xds;
TreeView1.DataBind();
}
}
这个算法没有经过大量数据的检验,有待考证!