如何在C#中快速实现数据库树形结构 http://www.aspxcn.com/dotnetbbs/View.aspx?fbId=23&Id=57150
解决方案 »
- 开发C# Form的过程中,为何我的进程中多了几个conime.exe进程
- 串口、NETCOM-100,获取信息
- 关于C#用线程实现进度条的功能实现?在线等待。。!!!!!!
- **********C# : 字符串加密和解密的问题**********
- 生成唯一硬件号
- 高手们出山啦!比中病毒更恐怖的问题,非高手勿看
- WAP浏览器 的实现
- 请问从SQL中查询出的空值该怎么处理?
- winform程序缓存与数据库同步问题
- 在线等待,请问 如何把窗体A中listbox中的内容加载到窗体B中的comboBox中去? 谢谢!
- 大家谈谈开发大型项目.net和j2ee的软件成本哪个底些?
- 求助:谁知道怎么把进度条改成自下而上滑动????
{
string sqltxt="Persist Security Info=False;User ID=sa;Initial Catalog=zhongtian;Data Source=ytf;Password=xu;";
SqlConnection sqlcon=new SqlConnection(sqltxt);
SqlCommand sqlcom=new SqlCommand("Select * from product_class where fatherid='0'",sqlcon);
try
{
sqlcon.Open();
SqlDataReader sqlreader=sqlcom.ExecuteReader();
while(sqlreader.Read())
{
TreeNode mynode=new TreeNode();
mynode.Text=sqlreader.GetString(2);
mynode.Tag=sqlreader.GetValue(1).ToString()+'|'+sqlreader.GetValue(2).ToString()+'|'+sqlreader.GetValue(3).ToString()+'|'+sqlreader.GetValue(0).ToString();
treeView1.Nodes.Add(mynode);
NextTree(sqlreader.GetValue(0).ToString(),treeView1.Nodes[0]);
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
sqlcon.Close();
}
} private void NextTree(string nodeid,TreeNode parentnode)
{
string sqltxt="Persist Security Info=False;User ID=sa;Initial Catalog=zhongtian;Data Source=ytf;Password=xu;";
SqlConnection sqlcon=new SqlConnection(sqltxt);
SqlCommand sqlcom=new SqlCommand("Select * from product_class where fatherid='"+ nodeid +"'",sqlcon);
try
{
sqlcon.Open();
SqlDataReader sqlreader=sqlcom.ExecuteReader();
while(sqlreader.Read())
{
TreeNode mynode=new TreeNode(sqlreader.GetString(2));
parentnode.Nodes.Add(mynode);
mynode.Tag=sqlreader.GetValue(1).ToString()+'|'+sqlreader.GetValue(2).ToString()+'|'+sqlreader.GetValue(3).ToString()+'|'+sqlreader.GetValue(0).ToString();
NextTree(sqlreader.GetValue(0).ToString(),mynode);
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
sqlcon.Close();
}
}
{
DataView dvwData = new DataView(this.dt.Tables[0]);
if (iParent == null)
{
dvwData.RowFilter = "[ParentID] is null";
}
else
{
dvwData.RowFilter = "[ParentID] = " +"'"+ iParent+"'";
}
foreach(DataRowView Row in dvwData)
{
// Call Stack !
if(pNode == null)
{
TreeNode zNode = this.treeView1.Nodes.Add(Row["DeptName"].ToString());
zNode.Tag = Row["DeptID"].ToString();
CreateNodesOfParent((Row["DeptID"].ToString()),zNode);
}
else
{
TreeNode zNode = pNode.Nodes.Add(Row["DeptName"].ToString());
zNode.Tag = Row["DeptID"].ToString();
CreateNodesOfParent((Row["DeptID"].ToString()),zNode);
}
}
}
public void IniTree()
{
this.treeView1.BeginUpdate();
CreateNodesOfParent(null,null);
this.treeView1.ExpandAll();
this.treeView1.EndUpdate();
}
public void InitTree(TreeNodeCollection Nds,string parentId,DataTable dt)
{
dv=new DataView();
TreeNode tmpNd;
string intId;
dv.Table=dt;
dv.RowFilter="ParentId=" + parentId ;
foreach(DataRowView drv in dv)
{
tmpNd=new TreeNode();
tmpNd.Tag =drv[0].ToString();
tmpNd.Text=drv[2].ToString();
Nds.Add(tmpNd);
intId=drv[1].ToString();
InitTree(tmpNd.Nodes,tmpNd.Tag.ToString(),dt);
}
}
树的遍历:
public void GetAllNodeText(TreeNodeCollection tnc,string txt)
{
foreach (TreeNode node in tnc)
{
if( node.Nodes.Count != 0 )
GetAllNodeText(node.Nodes,txt);
}
}
这个问题论坛里有好多,搜索下看看吧