你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 编程语言
2.16 ASP.Net 2.0 构建课件交流平台
 

一、系统功能

具有课件文件上传和课件的名称、科目、年级、制作者、说明等信息的上传、全部课件目录的显示、单个课件下载功能。

二、编程说明

ASP.Net 2.0中微软内置了更多控件,在1.x中需要程序员费尽心思才能完成的功能,在2.0中只需要简单地套用这些控件就能完成。

1AccessDataSource控件

ASP.Net 2.0包含了AccessDataSource控件,用来从Access数据库中将数据提取至ASP.Net 2.0(.aspx)页面。这个控件拥有的属性很简单。AccessDataSource的最重要的属性是DataFile属性,用来指向硬盘上MDB文件的路径。AccessDataSource拥有的其他属性还有SelectCommand,用来设定一个显示需要返回的结果集(表和列)的语句。SelectCommand必须使用SQL语法来定义。

VS.Net 2005 Beta 2中,可以用两种方式来添加AccessDataSource控件至页面。如果MDB文件被添加至Database Explorer中,那么可以拖放列名称至页面上,而且VS.Net 2005 Beta 2将会自动创建AccessDataSource控件和GridView来显示数据。如果不想使用GridView或者想定制控件,那么可以只从工具框中添加AccessDataSource控件并通过配置向导进行安装。向导将会提示浏览查找数据文件,并且允许通过在数据库的表中选择列来指定SelectCommand。如果是在VS.Net 2005 Beta 2之外输入页面,那么可以按照如下所示代码来输入:

asp:AccessDataSource

ID="MySourcName"

Runat="server"

DataFile="MyMDBName.mdb"

SelectCommand="SELECT MyField1, MyField2 FROM MyTable"

/asp:AccessDataSource

需要再次提及的特性很简单。所要提供的就是一个IDMDB文件名以及一个SelectCommand

2GridView控件

Asp.net 1.1版本流行控件DataGrid的继承者,功能比DataGrid增强不少,但是也有很大的不同。

1)掩藏字段的处理

DataGrid可以将字段直接设置为Visible=false,可以通过Cell[x].Text取到值。 GridView这个功能失效了,可以使用运行时来设定该列为掩藏。处理RowDataBound事件。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

{

 e.Row.Cells[5].Visible = false;

}

2)获取所选列的数据

DataGrid可以直接通过所选行来获取,GridView同样的代码无法运行。GridView 可以通过GridViewRow来获取。BtnAudit是模板列中的按钮。

GridViewRow grdRow = (GridViewRow)btnAudit.Parent.Parent;

string strId = grdRow.Cells[0].Text;

string memberId = grdRow.Cells[5].Text;

最终删除一条数据之前进行确认,这个可以使用摸版列,在模板列中放置按钮控件,其中有一个客户端事件onclientclick,这里可以写确认处理javascript脚本:

            <asp:TemplateField>
                  <ItemTemplate>

           <asp:Button ID="btnRefuse" runat="server" OnClick="btnRefuse_Click" Text="拒绝"  OnClientClick="return confirm(‘ 你真的要拒绝这个用户加入?)"/>

                </ItemTemplate>

            </asp:TemplateField>

3FormView 控件 

FormView 控件可以使用数据源中的单个记录,该控件与 DetailsView 控件相似。FormView 控件和 DetailsView 控件之间的差别在于 DetailsView 控件使用表格布局,在该布局中,记录的每个字段都各自显示为一行。而 FormView 控件不指定用于显示记录的预定义布局。实际上,将创建一个包含控件的模板,以显示记录中的各个字段。该模板中包含用于创建窗体的格式、控件和绑定表达式。

FormView 控件通常用于更新和插入新记录,主控件的选中记录决定要在 FormView 控件中显示的记录。有关更多信息及示例,请参见使用 FormView Web 服务器控件修改数据

FormView 控件依赖于数据源控件的功能执行诸如更新、插入和删除记录的任务。即使 FormView 控件的数据源公开了多条记录,该控件一次也只显示一条数据记录。

FormView 控件可以自动对它的关联数据源中的数据进行分页,一次一个记录,但前提是数据由实现 ICollection 接口的对象表示或基础数据源支持分页。FormView 控件提供了用于在记录之间导航的用户界面 (UI)。若要启用分页行为,请将 AllowPaging 属性设置为 true,并指定一个 PagerTemplate 值。

FormView 控件公开可以处理的多个事件,以便执行自己的代码。这些事件在对关联的数据源控件执行插入、更新和删除操作之前和之后引发。还可以为 ItemCreated ItemCommand 事件编写处理程序。有关更多信息,请参见 FormView Web 服务器控件事件

4FileUpload 控件

使用 FileUpload 控件,可以为用户提供一种将文件从用户的计算机发送到服务器的方法。该控件在允许用户上传图片、文本文件或其他文件时很有用。

1)提示上传的文件

FileUpload 控件显示一个文本框,在此用户可以键入希望上传到服务器的文件的名称。该控件还显示一个“浏览”按钮,该按钮显示一个文件导航对话框。(显示的对话框取决于用户计算机的操作系统。)出于安全方面的考虑,不能将文件名预加载到 FileUpload 控件中。

2)处理上传的文件

用户选择要上传的文件并提交页面后,该文件作为请求的一部分上传,文件将被完整地缓存在服务器内存中。文件完成上传后,页代码开始运行。

三、方案实现

1.服务器的搭建

安装Windows2000XP专业版,Server2003+IIS5.0IIS6.0+ +.NET Framework 2.0 + VS.Net 2005 Beta 2+Access软件,建立d:\kejian 文件夹,用来存放应用程序文件,在它的下面建立“files”文件夹,用来存放上传的课件文件。在默认网站上建立虚拟目录“kj”,并把它指定到“d:\kejian”文件夹(步骤:打开Internet 信息服务(控制面板→管理工具→Internet 信息服务,展开默认网站(本地计算机→网站→默认网站→右键默认网站→新建→虚拟目录→下一步→别名(kj)→网站内容目录(”d:\kejian”)→下一步→完成),设置files文件夹的权限,使它让使用ASP.Net的账户是可写,这样才能将文件保存到指定的文件夹中(方法:打开资源管理器,然后定位到要添加该权限的文件夹即可。右击该文件夹(本例中为 files 文件夹),然后选择属性。在属性对话框中,单击安全选项卡,确保列表中包括 ASP.Net 机器账户,该账户具有写入磁盘的适当权限)。

2.数据库的设计

Access中建立数据库“kejian,在库中添加课件表“kejian”,分别建立以下字段:编号(自动编号)(设为主键)、课件名称(文本)、科目(文本)、年级(文本)、制作者(文本)、说明(文本)、文件名(文本),字段大小为默认值50,并把它保存在“d:\kejian”文件夹下。

3.程序设计

1)课件上传

启动VS.Net 2005 Beta 2,打开“d:\kejian”网站,在菜单栏上选择“网站”→“新建项”,在“添加新项”窗口中选择“Web窗体”模板,在“名称”后的文本框中输入文件名“upload.aspx”,在“语言”后选择“Visual C#”语言,然后单击“添加”按纽。进入“upload.aspx”的设计窗口,从工具箱上依次拖 AccessDataSourceFormViewFileUpload 控件各一个和两个Label 控件和一个HyperLink控件,并使每个控件占一行。右键AccessDataSource1控件,在弹出菜单上选择“配置数据源”选项,弹出配置数据源向导的选择数据库,单击“浏览”按纽,弹出“连接Microsoft Access 数据库”窗口,在此窗口中选择“kejian.mdb”后确定,回到配置数据源向导的选择数据库窗口,选择下一步,在列下选择字段所有字段(*),再单击“高级”按纽,选择“生成INSERTUPDATE DELETE 语句(G)”后确定,选择“下一步”按纽,再选择“完成”按纽。选择FormView1 控件,在“属性”窗口中把它的DataSourceID 属性指定为AccessDataSource1,把DefaultMode  指定为Insert;右键FormView1 控件,在弹出菜单上选择“编辑模板”的“InsertItemTemplate”,进入模板编辑状态,把“文件名TextBoxs ”控件的Visual属性设为False,把“文件名”文字删除。把FileUpload1 控件拖入“InsertItemTemplate”模板中,双击“插入”控件进入源代码窗口,在click事件输入以下代码

{LinkButton link = FormView1.FindControl("InsertButton") as LinkButton;

string path = MapPath("~/files/");  // MapPath()取当前文件的绝对目录.

FileUpload f = FormView1.FindControl("FileUpload1") as FileUpload; 

TextBox tb = FormView1.FindControl("文件名TextBox") as TextBox;

if (f.HasFile) 

{string fileExt = System.IO.Path.GetExtension(f.FileName);

if ((fileExt == (".zip")) || (fileExt == (".rar"))) //控制要上传的文件类型

{ try

{string nam = f.PostedFile.FileName; //取得文件名(抱括路径)里最后一个"."的索引

int i = nam.LastIndexOf("."); //取得文件扩展名

string newext = nam.Substring(i);

//这里自动根据日期和文件大小不同为文件命名,确保文件名不重复

DateTime now = DateTime.Now;  // 取得系统当前时间

string newname = now.DayOfYear.ToString() + f.PostedFile.ContentLength;

//保存文件到所要的目录,这里是IIS根目录下的files目录.你可以改变.

f.PostedFile.SaveAs(path + newname + newext);

Label1.Text = newname + newext;  //把上传后的文件名传给控件label1的文本

Label2.Text = "文件上传成功!";

tb.Text = Label1.Text;}

catch (Exception ex)

{Label2.Text = "ERROR: " + ex.Message.ToString();}}

else

{link.CausesValidation = false;

link.CommandName = "Cancel";

Label2.Text = "只能选择rar,zip 文件";}}

else

{ link.CausesValidation = false;

link.CommandName = "Cancel";

Label2.Text = "你还没有选定文件";}}

并把<InsertParameters>节中的<asp:Parameter Name="编号" Type="Int32" />这一行删除,把 InsertCommand="INSERT INTO [kejian] ([编号], [课件名称], [科目], [年级], [制作者], [说明], [文件名]) VALUES (?, ?, ?, ?, ?, ?, ?)"改为InsertCommand="INSERT INTO [kejian] ([课件名称], [科目], [年级], [制作者], [说明], [文件名]) VALUES (?, ?, ?, ?, ?, ?)"。回到设计窗口,把“HyperLink1”控件的NavigateUrl属性设定为 show.aspx ,并把它的Text 属性改为“显示课件”。

2)课件显示

按照前面介绍的方法创建一个名为“show.aspxWeb窗体。在窗体中拖入AccessDataSourceGridViewHyperLink 控件各一个,按照前面的方法配置AccessDataSource1的数据源,把GridView1控件属性的DataSourceID设定为AccessDataSource1,单击GridView1控件右上角的小箭头弹出GridView1任务菜单,在菜单选择“添加新列”,弹出“添加字段”窗口,在页眉文本下输入“下载”文字,在超链接文本的指定文本下输入“进入”文字,在超链接URL中的从数据字段获取URLU)下选择“编号”字段,在URL格式字符串下输入download.aspx?id={0},然后确定。把HyperLink1控件的NavigateUrl属性设为upload.aspxtext属性设定为“上传课件”。

3)课件下载

按照前面介绍的方法创建一个名为“download.aspxWeb窗体。在窗体中拖入AccessDataSourceFormView控件各一个和两个HyperLink按件,按照前面的方法配置AccessDataSource1的数据源,把FormView1控件的DataSourceID 属性设定为AccessDataSource1,把HyperLink1控件的Text属性设为“下载此课件”,把HyperLink2Text属性设为“显示课件”,NavigateUrl属性设为show.aspx 在窗体的Page_Load事件中输入以下代码:

{Label name = FormView1.FindControl("文件名Label") as Label;

HyperLink1.NavigateUrl = "~/files/" +name.Text;}

4)解决上传文件大小限制

默认情况下,使用 FileUpload 控件上传到服务器的文件最大为 4MB 左右。不能上传超过该限制的任何内容。然而,关于 .NET 的重要一点是,它通常会提供一种规避限制的方法。通常可以更改正在使用的默认设置。要更改大小限制,可以在 web.config.comments 文件(可以在 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG ASP.Net 2.0 配置文件夹中找到)文件中进行一些改动。

web.config.comments 文件中,查找一个名为 <executionTimeout>的节点,如下所示:

<httpRuntime

 executionTimeout="110"

 maxRequestLength="4096"

……

apartmentThreading="false" />

在这个节点上进行了许多操作,但负责上传文件大小的设置是 maxRequestLength 属性。默认情况下,该属性设置为 4096 千字节 (KB)。只需更改此值,就可以增加可上传到服务器的文件大小。如果想要允许将 10 兆字节 (MB) 的文件上传到服务器,则将 maxRequestLength 值设置为 11264,这意味着该应用程序允许将最大为 11000 KB 的文件上传到服务器。

 

 

 

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089