//DataTable dt
//DataRow dr;
//读取数据省略,下面是添加和找父级的过程,两个for,前一个加载,后一个找父级。
//其中dr中三列分别是ID,ParentID,Name
for (i = 0; i < dt.Rows.Count; i++)
{
dr = dt.Rows[i];
dr.ItemArray.GetValue(0).ToString();
tvwArea.Nodes.Add("key"+dr.ItemArray.GetValue(0).ToString(), dr.ItemArray.GetValue(2).ToString());
} for (i = 0; i < dt.Rows.Count; i++)
{
dr = dt.Rows[i];
if (dr.ItemArray.GetValue(1).ToString != "")
{
tvwArea.Nodes["key"+dr.ItemArray.GetValue(0).ToString()].Parent = tvwArea.Nodes["key"+dr.ItemArray.GetValue(1).ToString()]
}
}
//DataRow dr;
//读取数据省略,下面是添加和找父级的过程,两个for,前一个加载,后一个找父级。
//其中dr中三列分别是ID,ParentID,Name
for (i = 0; i < dt.Rows.Count; i++)
{
dr = dt.Rows[i];
dr.ItemArray.GetValue(0).ToString();
tvwArea.Nodes.Add("key"+dr.ItemArray.GetValue(0).ToString(), dr.ItemArray.GetValue(2).ToString());
} for (i = 0; i < dt.Rows.Count; i++)
{
dr = dt.Rows[i];
if (dr.ItemArray.GetValue(1).ToString != "")
{
tvwArea.Nodes["key"+dr.ItemArray.GetValue(0).ToString()].Parent = tvwArea.Nodes["key"+dr.ItemArray.GetValue(1).ToString()]
}
}
解决方案 »
- [Serializable]是干什么用的???????????????????????????????
- 关于内存泄漏的问题
- 如何在datagridview控件前添加一个索引列,并且随着列排序的变化索引列也相应的变化?
- java 中 MessageDigest.digest (bytes[]) 用 C#实现怎么弄啊
- 在windows的任务管理器的 可以看到本机网络流量.如何从程序中得到这个利用率呢?很简单的问题,急!急!急!急!急!急!急!
- 请问怎样使用openFileDialog1控件打开多个文件,在listView1控件中显示出来?(急,回答即给分)
- 如何在winform中实现sql数据库得导入倒出工作?
- 有关listView控件的使用
- 代码为什么会 自己消失
- 深圳有那些公司用.net
- 子窗体为什么打不开?
- DatagridView Dock=fill 时,没有横向滚动条
//DataRow dr;
//读取数据省略,下面是添加和找父级的过程,两个for,前一个加载,后一个找父级。
//其中dr中三列分别是ID,ParentID,Name
//上面多写了一行。
for (i = 0; i < dt.Rows.Count; i++)
{
dr = dt.Rows[i];
tvwArea.Nodes.Add("key"+dr.ItemArray.GetValue(0).ToString(), dr.ItemArray.GetValue(2).ToString());
}for (i = 0; i < dt.Rows.Count; i++)
{
dr = dt.Rows[i];
if (dr.ItemArray.GetValue(1).ToString != "")
{
tvwArea.Nodes["key"+dr.ItemArray.GetValue(0).ToString()].Parent = tvwArea.Nodes["key"+dr.ItemArray.GetValue(1).ToString()]
}
}
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
private string connstring = ConfigurationManager.ConnectionStrings["ConnStr"].ToString(); private bool isHaveCheckBox = false;
private bool isExpanded = false;
private DataTable dtTree = null;
protected void Page_Load(object sender, EventArgs e)
{
//Response.Write("tttttttttt");
if (!IsPostBack)
{
AreaTree.Nodes.Add(getRootAreaTreeNode(false, false));
} } /// <summary>
/// 获取包含全部子节点的根节点数据
/// </summary>
/// <param name="haveCheckBox">节点是否产生CheckBox</param>
/// <param name="expanded">节点是否展开</param>
/// <returns></returns>
public TreeNode getRootAreaTreeNode(bool haveCheckBox, bool expanded)
{
//drPeng.HS.BR.AreaTree brTree = new drPeng.HS.BR.AreaTree(); string rootID = "0001";//brTree.getRootAreaTreeID();
string rootName = "中国";//brTree.getRootAreaTreeName();
//ds = brTree.getAllAreaTree(); isHaveCheckBox = haveCheckBox;
isExpanded = expanded; #region populate root node
TreeNode rootNode = new TreeNode();
rootNode.Text = rootName;
rootNode.Value = rootID;
//rootNode. = rootName;
// rootNode.NodeData = "0001";
rootNode.Expanded = true;
// rootNode.CheckBox = isHaveCheckBox;
#endregion DataSet dsTree = SqlHelper.ExecuteDataset(connstring, CommandType.Text, "select id, p_id, name from YourTable");
dtTree = dsTree.Tables[0];
this.populateAreaTree(rootID, rootNode); return rootNode;
} private void populateAreaTree(string parentID, TreeNode pNode)
{ DataRow[] dRows = dtTree.Select("p_id=" + parentID);
if (dRows.Length > 0)
{
TreeNode Node = null;
foreach (DataRow drow in dRows)
{
Node = new TreeNode();
Node.Text = drow["Name"].ToString();
Node.Value = drow["ID"].ToString();
//Node.DataItem = Node.Text + "|" + Node.Value;
Node.Expanded = isExpanded;
pNode.ChildNodes.Add(Node);
populateAreaTree(Node.Value, Node); //递归
}
}
}
}
/// 简单类型接口
/// </summary>
public interface ISimpleType
{
SimpleTypeInfoCollection getTreeTypes();
} /// <summary>
/// 简单类型信息
/// </summary>
public class SimpleTypeInfo
{
private int simpleTypeId;
private string typeName=string.Empty;
private int parentId;
private SimpleTypeInfo parentInfo=null;
private SimpleTypeInfoCollection childs=null; public int SimpleTypeID
{
get{return simpleTypeId;}
set{simpleTypeId=value;}
} public string TypeName
{
get{return typeName;}
set{typeName=value;}
} public int ParentID
{
get{return parentId;}
set{parentId=value;}
} public SimpleTypeInfo ParentInfo
{
get{return parentInfo;}
set{parentInfo=value;}
} public SimpleTypeInfoCollection Childs
{
get{return childs;}
set{childs=value;}
} public SimpleTypeInfo(){} public SimpleTypeInfo(int simpleTypeId,string typeName,int parentId,SimpleTypeInfo parentInfo,SimpleTypeInfoCollection childs)
{
this.simpleTypeId=simpleTypeId;
this.typeName=typeName;
this.parentId=parentId;
this.parentInfo=parentInfo;
this.childs=childs;
}
} /// <summary>
/// 简单类型信息集合
/// </summary>
public class SimpleTypeInfoCollection:CollectionBase
{
public SimpleTypeInfoCollection(){} public SimpleTypeInfo this[int index]
{
get{return (SimpleTypeInfo)List[index];}
set{List[index]=value;}
} public int Add(SimpleTypeInfo value)
{
return List.Add(value);
} public int IndexOf(SimpleTypeInfo value)
{
return List.IndexOf(value);
} public void Insert(int index,SimpleTypeInfo value)
{
List.Insert(index,value);
} public void Remove(SimpleTypeInfo value)
{
List.Remove(value);
} public bool Contains(SimpleTypeInfo value)
{
return List.Contains(value);
} }
/// SqlServer实现类
/// </summary>
public class SqlSimpleType:ISimpleType
{
protected string connectionString=@"database=yourdb;server=yourserver;user id=username;password=password;Pooling=true";
public SqlSimpleType(){} #region ISimpleType 成员 /// <summary>
/// 返回树对象
/// </summary>
/// <returns></returns>
public SimpleTypeInfoCollection getTreeTypes()
{
DataTable dt=this.getSimpleTypes(connectionString);
if(dt==null)
return null;
IDictionary all=new Hashtable();
for(int n=0;n<dt.Rows.Count;n++)
{
SimpleTypeInfo info=this.ConvertType(dt.Rows[n]);
if(info!=null)
all.Add(info.SimpleTypeID,info);
} SimpleTypeInfoCollection types=this.CreateTreeStructure(all);
return types;
} /// <summary>
/// 根据Hash创建树结构对象
/// </summary>
/// <param name="all"></param>
/// <returns></returns>
protected SimpleTypeInfoCollection CreateTreeStructure(IDictionary all)
{
if(all==null||all.Count<=0)
return null;
IDictionaryEnumerator de=all.GetEnumerator();
SimpleTypeInfoCollection collection=new SimpleTypeInfoCollection();
while(de.MoveNext())
{
SimpleTypeInfo info=(SimpleTypeInfo)de.Value;
//只添加根
if(info.ParentID<=0)
collection.Add(info);
if(all.Contains(info.ParentID))
{
SimpleTypeInfo parentInfo=((SimpleTypeInfo)all[info.ParentID]);
if(parentInfo.Childs==null)
parentInfo.Childs=new SimpleTypeInfoCollection();
parentInfo.Childs.Add(info);
info.ParentInfo=parentInfo;
}
}
return collection;
} /// <summary>
/// 返回简单类型表中的所有数据
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
protected DataTable getSimpleTypes(string url)
{
string sql="Select * From SimpleType";
SqlCommand cmd=new SqlCommand(sql,new SqlConnection(url));
SqlDataAdapter da=new SqlDataAdapter(cmd);
DataTable dt=new DataTable();
da.Fill(dt);
return dt;
} /// <summary>
/// 转换简单类型信息
/// </summary>
/// <param name="dr"></param>
/// <returns></returns>
protected SimpleTypeInfo ConvertType(DataRow dr)
{
if(dr==null)
return null;
SimpleTypeInfo info=new SimpleTypeInfo();
info.SimpleTypeID=Convert.ToInt32(dr["SimpleTypeID"]);
info.TypeName=Convert.ToString(dr["TypeName"]);
info.ParentID=dr["ParentID"]==System.DBNull.Value?0:Convert.ToInt32(dr["ParentID"]);
return info;
} #endregion
}
public class WebForm1 : System.Web.UI.Page
{
protected Microsoft.Web.UI.WebControls.TreeView testTree;
private void Page_Load(object sender, System.EventArgs e)
{
SqlSimpleType s=new SqlSimpleType();
SimpleTypeInfoCollection collection=s.getTreeTypes();
if(collection!=null)
collection.Count.ToString();
testTree.Nodes.Clear();
this.CreateItems(collection,testTree.Nodes);
} private void CreateItems(SimpleTypeInfoCollection items,TreeNodeCollection nodes)
{
if(items==null||items.Count<=0)
return;
foreach(SimpleTypeInfo info in items)
this.CreateItem(info,nodes);
} private void CreateItem(SimpleTypeInfo info,TreeNodeCollection nodes)
{
if(info!=null)
{
TreeNode node=new TreeNode();
node.Text=info.TypeName;
nodes.Add(node);
this.CreateItems(info.Childs,nodes[nodes.Count-1].Nodes);
}
}