vs2003项目里含有Microsoft Internet Explorer WebControls的treeview控件,升级到2005已经不能使用了,2005的msdn里也说Microsoft Internet Explorer WebControls is not currently supported。请大家帮忙给一段用2005自带treeview控件利用递归调用生成树的代码。感激!!!
调试欢乐多
private void CreatDate()
{
SqlConnection CN = new SqlConnection(SQL.SQLConn.sqlconn()); try
{
CN.Open();
SqlDataAdapter adp = new SqlDataAdapter("select * from ", CN);
DataSet ds = new DataSet();
adp.Fill(ds);
this.ViewState["ds"] = ds;
}
catch (Exception ex)
{
Session["Error"] = ex.ToString();
//Response.Redirect("error.aspx"); //?跳转程序的公共错误处理页面
}
finally
{
CN.Close();
}
//调用递归函数,完成树形结构的生成
AddTree(0, (TreeNode)null);
}
#endregion
#region 递归构造树 private void AddTree(int ParentCategotyId, TreeNode pNode) //ParentID
{
DataSet ds = (DataSet)this.ViewState["ds"];
DataView dvTree = new DataView(ds.Tables[0]);
//过滤ParentID,得到当前的所有子节点
dvTree.RowFilter = "[ParentId] = " + ParentCategotyId; foreach (DataRowView Row in dvTree)
{ TreeNode Node = new TreeNode();
if (pNode == null)
{ //添加根节点
Node.Text = Row["ConText"].ToString();//ConText
TreeView1.Nodes.Add(Node);
Node.Expanded = false; Node.Target = "SubjectRight";
//Node.NavigateUrl = "SubjectRight.aspx?ID=" + Row["ID"].ToString() + " &ConText=" + Row["ConText"].ToString() + "";
Node.NavigateUrl = "SubjectRight.aspx?ID=" + Row["ID"].ToString() + "&ConText=" + Row["ConText"].ToString().Trim() + "&ParentID=" + Row["ParentID"].ToString() + "&ParentText=" + Row["ParentText"].ToString().Trim() + "&isunOut=" + Row["isunOut"].ToString() + "&NewURL=" + Row["NewURL"].ToString() + "&HttpURL=" + Row["HttpURL"].ToString() + ""; // Node.ImageUrl ="../Img/TreeImages/treeopen.gif";
// Node.ExpandedImageUrl="../Img/TreeImages/treeclosed.gif";
AddTree(Int32.Parse(Row["ID"].ToString()), Node); //再次递归 ID
}
else
{ //?添加当前节点的子节点
Node.Text = Row["ConText"].ToString();
pNode.Nodes.Add(Node);
Node.Expanded = false;
Node.Text = Row["ConText"].ToString(); //ConText Node.Target = "SubjectRight";
Node.NavigateUrl = "SubjectRight.aspx?ID=" + Row["ID"].ToString() + "&ConText=" + Row["ConText"].ToString().Trim() + "&ParentID=" + Row["ParentID"].ToString() + "&ParentText=" + Row["ParentText"].ToString().Trim() + "&isunOut=" + Row["isunOut"].ToString() + "&NewURL=" + Row["NewURL"].ToString() + "&HttpURL=" + Row["HttpURL"].ToString() + ""; // Node.ImageUrl ="../Img/TreeImages/treeopen.gif";
// Node.ExpandedImageUrl="../Img/TreeImages/treeclosed.gif";
//
AddTree(Int32.Parse(Row["ID"].ToString()), Node);
}
} } #endregion
ParentId 父节点id
ConText 节点名称
ParentText 父节点名称
NewURL 链接位置
/// 递归构建节点树
/// </summary>
private void CreateNode(string id,TreeNode td)
{
Microsoft.Web.UI.WebControls.TreeNode tempNode=null;
string selectString=null;
string strNodeText=null;
string strChildId=null; selectString="Menu_Parent=" + id + ""; DataRow[] dataRows = treeDataSet.Tables["menuTable"].Select(selectString); //搜索当前节点的所有子节点 foreach(DataRow dr in dataRows)
{
tempNode = new Microsoft.Web.UI.WebControls.TreeNode();
strNodeText = dr["Menu_Name"].ToString();
strChildId = dr["id"].ToString();
tempNode.Text = strNodeText;
td.Nodes.Add(tempNode); //添加子节点
CreateNode(strChildId,tempNode);
}
}
public void CNCSMSColumnInfoLoad(ref TreeView TreView)
{
//****清空当前节点
TreView.Nodes.Clear(); //****构建一个父节点
TreeNode TRPNode = null;
//****加载根节点 //****创建一个数据
DataSet DSet = new DataSet(); //****说明:查找根节点条为 AND LEN(PNODECODE)=2 ORDER BY PNODECODE DESC;
//****获取数据
//DSet = (new WebServiceParser());
foreach (DataRow dRow in DSet.Tables[0].Rows)
{
//****加载根节点
TRPNode = new TreeNode(); TRPNode.Text = dRow["PNodeName"].ToString();
TRPNode.Value = dRow["PNodeCode"].ToString(); string PNODECODE=dRow["PNodeCode"].ToString();
//****加载子节点
ColumnInfoLoadChile(TRPNode, ref PNODECODE); }
} private void ColumnInfoLoadChile(TreeNode TRPNode, ref string PNodeCode)
{
//****获取父节点编号
string PNode = PNodeCode; //****创建一个数据集
DataSet DSet = new DataSet(); //****调用外部接口
//DSet = (new WebBrowsableAttribute()); /*
* 获取子节点条件
* int intlen,intclen;
*if(mitem.pnodecode==null)
* {
* intclen=0;
* }
* else
* {
* intclen=mitem.pnodecode.lenght;
* }
* intclen+=2;
* "and (substring(pnodecode,0,len(pnodecode))='" + intclen + "' and (len(pnodecode)='" + intlen + "') order by pnodecode asc";
*/
TreeNode chilepnode = null; foreach (DataRow dRow in DSet.Tables[0].Rows)
{
chilepnode = new TreeNode(); chilepnode.Text = dRow["PNodeName"].ToString();
chilepnode.Value = dRow["PNodeCode"].ToString(); string mPNodeCode=dRow["PNodeCode"].ToString(); ColumnInfoLoadChile(chilepnode, ref mPNodeCode);
} }