2024年4月21日发(作者:)
电脑编程技巧与维护
ASP.NET中文件目录的读取及显示方法
叶笠。谭飞,李晓华,余杰
(中国人民解放军78179部队,成都61 1830)
摘要:ASP.NET中的TreeView控件可以以树型的方式显示数据,DataTable则可以存放数据集,着重介绍了在
DataTable中构造文件目录数据,以及将它们在TreeView控件上表现出来的方法。
关键词:ASP.NET;TreeView;DataTable
Directories Listing Method in ASP.NET
YE Li,TAN Fei,LI Xiaohua,YU Jie
(Army Unit 78179 of PLA,Cbengdu 61 1830)
Abstract:This paper address itself in listing directories in ASP.NETt applications.Firstly,the directories and files are read
in a DataTable,and secondly,the DataTable are shown by a TreeView contro1.
Key words:ASP.NET;TreeView;DataTable
l 引言
ASP.NET提供了一个叫TreeView的控件可以显示带有树
型结构的数据,这给程序设计中需要读取文件目录的应用提
供了极大的方便,实际上,凡是具有继承(父子)关系的数
据均可使用这一控件进行表示。介绍一个将某个目录下的数
据(子目录和文件)读入一个DataTable数据集中,并用
entid”,typeof(int)));
dtFile.Columns.Add(new DataColumn(”fiIe—
name”
typeof(stirng)));
,
d le.Columns.Add(new DataColumn
name”
,
(”full-
typeof(string)));
TreeView控件显示出来的方法。通过这个例子可使读者掌握
构造具有树型结构数据集和使用TreeView控件的一般方法。
DataRow dr:dtFile.NewRow 0;
dr【0】=fileID++;
dr【1】=0;
dr【2】=thisOne.Name.ToString 0;
dr[3】=thisOne.FullName.ToString();
d le.Rows.Add(dr);
Lis les(thisOne,l,dtFile,rdFile);
return dtFile;
2构造文件目录数据集
一
个指定的目录下可能有若干子目录和文件,而子目录
}
下又可能有下级子目录和文件,要使各目录相互关联,必需
构造包含两个关键字段的数据表,一个是ID字段,用于标识
private void ListFiles(Directorylnfo theDir,int parent_id,
当前目录;另外一个是ParentID,用于指向当前目录的父目
录。数据表如表1所示。
表1文件目录DataTable
字段名 字段类型 含义
DataTable dt,bool rdFile),/递归目录、文件
f
DataRow dr;
Directorylnfo【】 subDirectories=theDir.GetDi-
rectories 0 获得目录
foreach(Directorylnfo dirinfo in subDirectories)
{
dr=dt.NewRow 0:
dr【0】=filelD;
dr【l】=parent_id;
dr【2】=dirinfo.Name.ToString();
dr【3】=dirinfo.FuUName.ToString 0;
dt.Rows.Add(dr);
int pid=filelD++;
id
parent_id
int
mt
用于标识当前目录
用于标识当前目录的父目录
iflename
fullname
string
stnng
文件目录名
文件目录全路径名
下面给出的两个函数用于将指定目录的子目录及文件读
入一个DataTable数据表,在函数GetFiles中,如果bool型变
量rdFile值为真,则需读取目录下的文件;如果值为假,则只
凑取目录下的子目录,而不读取文件。
public DataTable GetFiles(string path,bool rdFile)
if(rdFile)
{
Filelnfo[]filelnfo=dirinfo.GetFiles 0;
{
Directorylnfo thisOne:new Directorylnfo(path);
ifleID=l:
,,获得目录下的文件
fomach(Filelnfo lfnfo in iflelnfo)
{
dtFile=new DataTable 0:
dtFile.Columns.Add(new DataColumn(”id”,
typeof(inc)));
dtFile.Columns.Add(new DataColunLn(”p
作者简介:叶笠(1972一),男,高级工程师,研究方向:计
算机软件、信息安全;谭飞,高级工程师。
收稿日期:2011-l1—16
、、 ∥ 与 与赡
DATABASE AND INF0RMATION MANAGEMENT
dr=dt.NewROW 0:
dr【0】=fileID++;
rd【1】=pid;
dr[2]:flnfo.Name.ToString 0;
rd【3】=flnfo.FullName.ToString 0;
dt.Rows.Add(dr);
}
}
ListFiles(diirnfo,pid,dt,rdFile);
}
}
3 显示DataTable数据集中的数据
下面的3个函数旨在实现使用TreeView显示DataTable中
的数据,其中ShowTree函数的功能为在特定的TreeView实例
上显示特定的DataTable数据集;AddSubNode为一个递归函
数,其功能为在特定的节点上添加子节点;GetSubNodeView
函数的功能为获取相应的数据视图。在具体程序设计中,只需
调用ShowTree函数即可。各函数参数及含义如表2~表4所示。
表2 ShowTree函数
ShowTree 在trv上将dt中的数据显示出来
参数名 类型 意义
trv rreeView TreeView的实例
dt DataTable DataTable的实例
rootFilter Stirng 根节点的过滤条件
textField String dt中文本显示字段名,根节点将
显示textField字段的内容
valueField Stirng dt中值字段名,根节点的值是
valueField字段的内容
tipField stnng dt中提示内容的字段名,当鼠标
移至根节点时,弹出的提示内容
为此字段的值
表3 AddSubNode函数
AddSubNode 递归函数,为子节点添加子节点
参数名 类型 意义
dt DataTable DataTable的实例
node TreeNode 被添加子节点的节点
textField string dl中文本显示字段名,子节点将
显示textField字段的内容
valueField stnng dt中值字段名,子节点的值是val
ueField字段的内容
tipField stnng dt中提示内容的字段名,当鼠标
移至子节点时,弹出的提示内容
为此字段的值
表4 GetSubNodeView函数
GetSubNodeView 在dt中过滤值为ID的数据
参数名 类型 意义
dt DataTable DataTable的实例
ID stirng 需过滤的值
public void ShowTree(TreeView trv,DataTable dt,string
rootFilter,string textField,string valueField,string ifpField)
{
DataView dv=new DataView(dt);
dv.RowFilter=rootFilter;
数据库与信息管理
foreach(DataRowView row in dv)
{
TreeNode node=new TreeNode 0:
node.Text=row【textField】.ToString 0;
node.Value=row【valueField】.ToString 0;
node.ToolTip=row【tipField】.ToString 0;
trv.Nodes.Add(node):
AddSubNode(dt,node,textField,valueField,tip-
Field);
}
)
protected void AddSubNode(DataTable dt,TreeNode node,
string textField,stirng valueField,string tipField)
{
DataView dv=GetSubNodeView(dt,node.Val—
ue);
foreach(DataRowView row in dv)
{
TreeNode subNode=new TreeNode 0:
subNode.Text:row[textField】.ToString 0;
subNode.Value=row[valueField】.ToString();
subNode.ToolTip=row[tipField】.ToString 0;
node.ChildNodes.Add(subNode);
AddSubNode(dt,subNode,textField,valueField,
tipField);
}
)
protected DataView GetSubNodeView(DataTable dt,string
ID)
{
DataView view=new DataView(dt);
view.RowFilter=”parent
_
id=”+ID;
return view;
l
4 应用实例
下述代码将“测试目录”及其子目录显示在TreeView控
件try—Directory上。
private T eView trv Directory;
trv Directory.Nodes.Clear();
string dir=Server.MapPath C测试目录”);
DataTable dt=GetFiles(dir,false):
ShowTree(trv Directory,dt,”id=1”,”filename”,”
id”.”fullname”.false):
5 结语
将目录文件存入一个DataTable数据集中,并将其在
TreeView控件上显示,通过这个实例说明ASP.NET程序设计
中构造和显示树型结构数据集的一般方法。
参考文献
【1】梁冰,吕双,王小科.c#程序开发.北京:人民邮电出
版社,2009.
【2】王建华,汤世明,谢吉容.ASP.NET 2.0动态网站开发技
术与实践.北京:电子工业出版社,2007.
【3】Rod Stephens.数据库设计解决方案入门经典.北京:清
华大学出版社,2010.


发布评论