private void Page_Load(object sender, System.EventArgs e)
{
if(!this.IsPostBack)
{
// this.PageBegin(true);
_empid=Convert.ToInt16(this.Empid);
BuildConstItems(TvwDoc);
TvwDoc.ExpandLevel=2;
}
}
//绑定目录树的所有数据,包括静态节点和动态节点
public void BuildConstItems(TreeView TvwTree)
{
TreeNode subnode1=new TreeNode();
subnode1.Text="文件管理";
subnode1.ID="BB";
subnode1.ImageUrl="images/folder.gif";
subnode1.ExpandedImageUrl="images/folderopen.gif";
subnode1.NavigateUrl="";
subnode1.Target="";
TvwTree.Nodes.Add(subnode1);
CreateDocTree(subnode1);
}
//从数据库读取第一级目录信息,分别加到目录树中,并调用其他方法将所有目录绑定到目录树控价
private void CreateDocTree(TreeNode node)
{
DocTree doctree=new DocTree();
DataView dv=doctree.GetTreeNodeFolder(0);
int nodecounts=dv.Count;
for(int i=0;i<nodecounts;i++)
{
int id=Convert.ToInt32(dv[i].Row[0].ToString());
int hifolder=Convert.ToInt32(dv[i].Row[2].ToString());
string foldername=dv[i].Row[15].ToString();
TreeNode tvnode=new TreeNode();
tvnode.Text=foldername;
tvnode.ID=Convert.ToString(id);
tvnode.ExpandedImageUrl="images/folderopen.gif";
tvnode.ImageUrl="images/folder.gif";
tvnode.NavigateUrl="";
tvnode.Target="";
node.Nodes.Add(tvnode);
LoadSubFolder(tvnode,id);
}
}
//采用递归方法获得指定目录下的所有目录信息,并绑定到该目录节点下
private void LoadSubFolder(TreeNode node,int hifolderid)
{
DocTree doctree=new DocTree();
DataView dv=doctree.GetTreeNodeFolder(hifolderid);
int nodecounts=dv.Count;
if(nodecounts!=0)
{
for(int i=0;i<nodecounts;i++)
{
int id=Convert.ToInt32(dv[i].Row[0].ToString());
int hifid=Convert.ToInt32(dv[i].Row[2].ToString());
string foldername=dv[i].Row[0].ToString();
TreeNode tvnode=new TreeNode();
tvnode.Text=foldername;
tvnode.ID=Convert.ToString(hifid);
tvnode.ImageUrl="images/folder.gif";
tvnode.ExpandedImageUrl="images/folderopen.gif";
tvnode.NavigateUrl="";
tvnode.Target="";
node.Nodes.Add(tvnode);
LoadSubFolder(tvnode,id);
}
}
}
//得到DataView的类
public class DocTree
{
public DocTree()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public DataView GetTreeNodeFolder(int hifolderid)
{
FileData data=(new FileA()).GetFolderTree();
DataView dv=data.Tables[FileData.FMDOCFOLDER_TABLE].DefaultView;
dv.RowFilter="hifolderid="+hifolderid;
return dv;
}
public DataView GetTreeNodeFolderII(int folderid)
{
FileData data=(new FileA()).GetFolderTree();
DataView dv=data.Tables[FileData.FMDOCFOLDER_TABLE].DefaultView;
dv.RowFilter="forderid="+folderid;
return dv;
}
}
//获取DATASET数据的类
public FileData GetFolderTree()
{
dsCommand=new SqlDataAdapter("fmLoadFolderTree",CONN);
if(dsCommand==null)
{
throw new System.ObjectDisposedException(GetType().FullName);
}
dsCommand.SelectCommand.CommandType=CommandType.StoredProcedure;
FileData data=new FileData();
dsCommand.Fill(data,FileData.FMDOCFOLDER_TABLE);
return data;
}
一共三步,分三层,数据表里要设父文件夹和子文件夹