DataView dv = new DataView(dt); //返回得到的视图DataView return dv; }
我们通过这个方法得到了一个包含所有我们需要的数据的数据视图DataView,我们只需要在此aspx页的Page_Load方法中将此数据视图绑定到DataGrid上就可以了。
数据绑定代码(代码在listdrivers.aspx.cs文件中):
/* 设置DataGrid的数据源DataSource为我们从CreateDataSource()方法得到的数据视图DataView */ DriversGrid.DataSource = CreateDataSource(); //将此DataGrid进行数据绑定 DriversGrid.DataBind();
通过上边介绍的几种主要方法我们就实现了获取系统信息和显示所有逻辑驱动器名称的功能,并且可以通过相应的链接进入下一个显示目录和文件名的程序listdir.aspx显示该逻辑驱动器下的所有目录和文件。
程序二:显示目录中所有子目录和文件的程序listdir.aspx
目录下有子目录和文件两种形式,必须分别对待。我们调用此程序本身对子目录进行列表显示,而文件我们需要调用showfile.aspx程序对文件的属性和内容进行显示。并且两者还有不同的删除方法,所以我们在这里设置了两个DataGrid,两个DataTable,两个DataView,分别处理和显示目录和文件。
显示和处理目录和文件的DataGrid的代码(代码在listdir.aspx文件):
显示目录或文件的序号和名称的数据列类似于listdrivers.aspx程序中的相应代码,这里就不再重复了。对于子目录和文件分别有各自的处理页面,所以需要导航到两个不同的页面,对于子目录,我们继续使用listdir.aspx程序对其下的子目录和文件进行列表显示:
<asp:HyperLinkColumn DataNavigateUrlField="DirName" DataNavigateUrlFormatString="listdir.aspx?dir={0}" DataTextField="DirDetail" HeaderText="详细信息" Target="_new" /> 对于文件,我们使用showfile.aspx程序显示其属性和内容: <asp:HyperLinkColumn DataNavigateUrlField="FileName" DataNavigateUrlFormatString="showfile.aspx?file={0}" DataTextField="FileDetail" HeaderText="详细信息" Target="_new" />
在两个DataGrid(DirGrid,FileGrid)中我们分别设置了两个HyperLinkColumn列来导航到不同的处理页面。
在两个DataGrid中我们都使用了一个删除的按钮列:
<asp:ButtonColumn HeaderText="删除" Text="删除" CommandName="Delete" />
由于添加、更新、删除功能列都是DataGrid的默认模板列,所以可以在Vs.net中通过DataGrid的属性生成器自动添加此列。
获取上一页面所传递来的参数的代码:
因为在下面产生数据源的方法中需要使用由上一个页面传递过来的参数来确定目录和文件的名称,所以在页面的Page_Load方法里使用了下列代码:
strDir2List = Request.QueryString["dir"];
字符串strDir2List即传过来的目录名或文件名。
因为我们使用了两个DateGrid,就需要进行两次数据绑定,就有两个不同的生成数据源的方法。
生成目录数据网格(DirGrid)数据源的方法:
//通过此方法返回一个集合形式的数据视图DataView,用来初始化子目录的DataGrid ICollection CreateDataSourceDir() { dtDir = new DataTable(); DataRow dr; //向DataTable中添加新的数据列,共四列 dtDir.Columns.Add(new DataColumn("DirID", typeof(Int32))); dtDir.Columns.Add(new DataColumn("DirName", typeof(string))); dtDir.Columns.Add(new DataColumn("DelDir", typeof(string))); dtDir.Columns.Add(new DataColumn("DirDetail", typeof(string))); //根据传入的参数(目录名)得到此目录下所有子目录名的字符串数组 string [] DirEntries = Directory.GetDirectories(strDir2List); //使用foreach循环可以对未知长度的数组进行遍历循环 foreach(string DirName in DirEntries){ dr = dtDir.NewRow();
上一篇:2004.06.08 0day 中文简介
下一篇:IE为什么突然关闭?Cookie在捣乱
|