请教treeview问题 网上很多,搜一下,或到ASPCN有个简单例子 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 id parent (两个字段)当parent 为空时就是根结点.然后用递归的方式给每个根结点找子结点.很简单的哦 我是这样实现的: 我的数据库使用ACCESS 在数据库中有两个表,一个是代码表,一个代码类别表: 代码表的结构: ID: 编号 Name: 名字 Categorized:代码的类别 代码类别表的结构: ID: 编号 Name:名字 Parent:上层类 主要采用类似递归的方法: 还有使用到TAG 属性,用来记录点的一些必要的信息, 以下是代码,决绝了问题记得给我分。 public void LoadData() { treeView1.Nodes.Clear (); string SqlCate="SELECT [ID],[Name],[Parent] FROM[Categorized] ORDER BY [Parent],[ID]"; mDs=Oper.GetResults(SqlCate); string SqlCode="SELECT [ID],[Title],[Categorized] FROM [Code] ORDER BY [ID]"; mCodeDs=Oper.GetResults (SqlCode); AddNoteOfParent(-1,null); } private void AddNoteOfParent(int IdParent,TreeNode PNode) { DataView dv=new DataView ( mDs.Tables [0]); dv.RowFilter ="[Parent]=" +IdParent; foreach(DataRowView rv in dv ) { if (PNode==null) { TreeNode tn=new TreeNode (rv["Name"].ToString()); treeView1.Nodes.Add (tn); AddNoteOfParent(int.Parse (rv["ID"].ToString ()),tn); AddCodeNode(int.Parse (rv["ID"].ToString ()),tn); } else { TreeNode tn=new TreeNode (rv["Name"].ToString ()); PNode.Nodes.Add (tn); CNodeItem ni=new CNodeItem (); ni.ID =int.Parse (rv["ID"].ToString ()); ni.ItemType=NodeItemType.Categorize ; tn.Tag =ni; AddNoteOfParent(int.Parse (rv["ID"].ToString ()),tn); AddCodeNode(int.Parse (rv["ID"].ToString ()),tn); } } } private void AddCodeNode(int IdParent,TreeNode PNode) { DataView codedv=new DataView ( mCodeDs.Tables [0]); codedv.RowFilter ="[Categorized]=" + IdParent.ToString (); foreach(DataRowView rv in codedv) { TreeNode tn=new TreeNode (rv["Title"].ToString ()); CNodeItem ni=new CNodeItem (); ni.ID =int.Parse (rv["ID"].ToString ()); ni.ItemType =NodeItemType.Code ; tn.Tag=ni; PNode.Nodes.Add (tn); } } private void treeView1_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e) { TreeNode tn=treeView1.SelectedNode ; if (tn.Tag==null) return; CNodeItem ni=(CNodeItem) tn.Tag ; string SqlStr=""; if (ni.ItemType !=NodeItemType.Categorize ) { SqlStr="SELECT * FROM [Code] WHERE [ID]=" +ni.ID.ToString (); DataSet ds=Oper.GetResults (SqlStr); DataTable dt=ds.Tables [0]; if (dt.Rows.Count ==1) { DataRow dr=dt.Rows [0]; labTitle.Text ="标题:"+tn.Text ; txtNote.Text =dr["Note"].ToString (); txtCode.Text =dr["Content"].ToString (); mCurrentCode.Title =dr["Title"].ToString (); mCurrentCode.Categorized =int.Parse (dr["Categorized"].ToString ()); mCurrentCode.Content =dr["Content"].ToString (); mCurrentCode.KeyWord =dr["Keyword"].ToString (); mCurrentCode.Note =dr["Note"].ToString (); mCurrentCode.Relationship =dr["Relationship"].ToString (); } } else { SqlStr="SELECT * FROM [Categorized] WHERE [ID]=" +ni.ID.ToString (); DataSet ds=Oper.GetResults (SqlStr); DataTable dt=ds.Tables [0]; if (dt.Rows.Count ==1) { DataRow dr=dt.Rows [0]; mCurrentCate.Id =int.Parse (dr["ID"].ToString ()); mCurrentCate.Name =dr["Name"].ToString (); mCurrentCate.Note =dr["Note"].ToString (); mCurrentCate.Parent =int.Parse (dr["Parent"].ToString ()); }//end if }//end if } 变量赋值,双引号 textbox像word那样显示分页的功能,请高手指点!!! 今天去面试,结果他们的机上没有装.NET Framework 2.0,我编的程序运行不了,.NET编的程序怎么才能在没.NET的机上运行?非托管是什么? 请问如何在强类型的dataset中加入一列映射?详细内容帖子里。 用httpWebRequest取得https网站的证书 ToInt32() 如何KILL调 线程池中的线程 CPU的ID號怎麼讀出來 請問你們有誰知道嗎?------- 要編寫自己的程序代碼來實現? 紧急求助 关于监听程序 [菜鸟问题]如何做FORM的刷新 C#主要用来做什么?
当parent 为空时就是根结点.然后用递归的方式给每个根结点找子结点.很简单的哦
我的数据库使用ACCESS
在数据库中有两个表,一个是代码表,一个代码类别表:
代码表的结构:
ID: 编号
Name: 名字
Categorized:代码的类别
代码类别表的结构:
ID: 编号
Name:名字
Parent:上层类 主要采用类似递归的方法:
还有使用到TAG 属性,用来记录点的一些必要的信息,
以下是代码,决绝了问题记得给我分。
public void LoadData()
{
treeView1.Nodes.Clear (); string SqlCate="SELECT [ID],[Name],[Parent] FROM[Categorized] ORDER BY [Parent],[ID]";
mDs=Oper.GetResults(SqlCate);
string SqlCode="SELECT [ID],[Title],[Categorized] FROM [Code] ORDER BY [ID]";
mCodeDs=Oper.GetResults (SqlCode);
AddNoteOfParent(-1,null);
}
private void AddNoteOfParent(int IdParent,TreeNode PNode)
{
DataView dv=new DataView ( mDs.Tables [0]);
dv.RowFilter ="[Parent]=" +IdParent;
foreach(DataRowView rv in dv )
{
if (PNode==null)
{
TreeNode tn=new TreeNode (rv["Name"].ToString());
treeView1.Nodes.Add (tn);
AddNoteOfParent(int.Parse (rv["ID"].ToString ()),tn);
AddCodeNode(int.Parse (rv["ID"].ToString ()),tn);
}
else
{
TreeNode tn=new TreeNode (rv["Name"].ToString ());
PNode.Nodes.Add (tn);
CNodeItem ni=new CNodeItem ();
ni.ID =int.Parse (rv["ID"].ToString ());
ni.ItemType=NodeItemType.Categorize ;
tn.Tag =ni;
AddNoteOfParent(int.Parse (rv["ID"].ToString ()),tn);
AddCodeNode(int.Parse (rv["ID"].ToString ()),tn);
}
}
}
private void AddCodeNode(int IdParent,TreeNode PNode)
{
DataView codedv=new DataView ( mCodeDs.Tables [0]);
codedv.RowFilter ="[Categorized]=" + IdParent.ToString ();
foreach(DataRowView rv in codedv)
{
TreeNode tn=new TreeNode (rv["Title"].ToString ());
CNodeItem ni=new CNodeItem ();
ni.ID =int.Parse (rv["ID"].ToString ());
ni.ItemType =NodeItemType.Code ;
tn.Tag=ni; PNode.Nodes.Add (tn);
}
}
private void treeView1_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
TreeNode tn=treeView1.SelectedNode ;
if (tn.Tag==null) return;
CNodeItem ni=(CNodeItem) tn.Tag ;
string SqlStr=""; if (ni.ItemType !=NodeItemType.Categorize )
{
SqlStr="SELECT * FROM [Code] WHERE [ID]=" +ni.ID.ToString ();
DataSet ds=Oper.GetResults (SqlStr);
DataTable dt=ds.Tables [0];
if (dt.Rows.Count ==1)
{
DataRow dr=dt.Rows [0];
labTitle.Text ="标题:"+tn.Text ;
txtNote.Text =dr["Note"].ToString ();
txtCode.Text =dr["Content"].ToString ();
mCurrentCode.Title =dr["Title"].ToString ();
mCurrentCode.Categorized =int.Parse (dr["Categorized"].ToString ());
mCurrentCode.Content =dr["Content"].ToString ();
mCurrentCode.KeyWord =dr["Keyword"].ToString ();
mCurrentCode.Note =dr["Note"].ToString ();
mCurrentCode.Relationship =dr["Relationship"].ToString ();
}
}
else
{
SqlStr="SELECT * FROM [Categorized] WHERE [ID]=" +ni.ID.ToString ();
DataSet ds=Oper.GetResults (SqlStr);
DataTable dt=ds.Tables [0];
if (dt.Rows.Count ==1)
{
DataRow dr=dt.Rows [0];
mCurrentCate.Id =int.Parse (dr["ID"].ToString ());
mCurrentCate.Name =dr["Name"].ToString ();
mCurrentCate.Note =dr["Note"].ToString ();
mCurrentCate.Parent =int.Parse (dr["Parent"].ToString ());
}//end if
}//end if
}