




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本系统开发工具:ASP.net(C#.NET)+ACCESS本设计包含内容:C#.NET电子商务网站毕业设计源代码程序+C#.NET毕业设计电子商务网站毕业论文+参考文献+目录+摘要+致谢+ASP.NET毕业设计电子商务网站任务书等见附件C#.NET毕业设计电子商务网站论文大概:1.6万字毕业设计ASP.NET毕业设计电子商务网站开题报告毕业设计(论文)开题报告一、 选题的背景和意义 电子商务网站是当今e时代方便人们生活的又一伟大创举。在生活节奏越来越快的今天,人们需要有更多的休息时间,而网上购物正是给人们带来一种轻松,让每个人享受购物的快乐和冲浪的乐趣。二、 课题的关键问题与难点 一个网络电子网站可以实现的功能非常强大,例如:全世界鼎鼎有名的亚马逊书店,除了基本的网络电子商店的功能之外,还可分析客户购买行为,列出相关商品,会员的投票评分,还有跟后台服务系统及后台金流物流系统的集成。当然也可以做的功能很简单,例如:现在很多的公司只做到商品目录介绍,连采购车的系统都没有,下订单还要通过电子邮件来完成。当然我觉得做的电子商务网站分为两部分:一是前端的购物系统,二是后端的管理系统。在整个系统中的核心技术为购物和结帐系统,但最为难的技术为安全技术,在整个系统中我们需要进行SSL加密,数据库加密,和网页间数据传递加密以及用户和密码加密。三、 与本课题相关的文献阅读综述(附参考文献目录) 其实我们在做一个电子商务网站,不仅需要有具有想象力的头脑,还需要具备一定的网页设计技术,现在我就自己接触的一些技术加以说明。 现在我就从最简单的技术HTML一种静态网页技术谈起。HTML(HyperText Markup Language,超文本标记语言)是表示网页的一种规范(或者说是一种标准),它通过标记定义了网页内容的显示。例如,标记符可以在网页上定义一个表格。(说明:超文本是相对普通文本而言的,与普通文本按顺序定位不同,超文本最典型的特点就是文本中包含指向其他位置的连接,通过这些连接是文档组织成了网状结构。) 在 HTML文档中,通过使用标记符可以告诉浏览器如何显示网页,即确定内容的显示格式。浏览器按顺序读取HTML文件,然后根据内容周围的HTML标记符理解和显示各种内容。例如,如果为某段内容添加标记符,浏览器则会以比一般文字大的粗体字显示该段内容。 HTML的超文本功能,也就是超连接功能,是网页之间可以连接起来。网页与网页的连接构成了网站,而网站与网站的连接就构成了多姿多彩的WWW。 HTML由国际组织W3C(万维网联盟)制定和维护,HTML3.2是目前支持最好的标准(几乎所有浏览器都支持),但HTML4.0也已经普及。最新的标准是HTML4.01,它对HTML4.0作了一些小的修正,但这也是HTML的最后一个版本。 如果需要了解 HTML的更详细的情况,请访问W3C的官方网站:,可以从该网站中获取最新的 HTML规范。 接下来我们来介绍一下网页的格式化技术CSS技术,CSS(Cascading Style Sheet,层叠样式表)技术是一种格式化网页的标准方式,它扩展了HTML的功能,使网页设计者能够以更有效的方式设置网页格式。 下面就让我加以简单的说明,CSS样式的定义基本形式为:selectorproperty1:Value1;property2:Value2; ,其中,selector可以是HTML的标记符、具有上下文关系的 HTML标记符、用户定义的类、用户定义的ID以及虚类;而property和Value则分别是由CSS标准定义的CSS属性和相应的值。CSS属性包括:字体与文本属性、颜色与背景属性、布局属性、定位和显示属性、列表属性以及鼠标属性和过滤器(filter)。在网页中使用CSS包括三种常用方式:将样式定义直接嵌入到标记符中、将样式定义嵌入到网页中以及将样式定义包含在外部CSS样式中。 现在介绍一下怎样在网页中加入脚本技术JAVASCRIPT技术。脚本(Script)实际上就是一段程序,用来完成某些特殊的功能。脚本程序既可在服务器端运行(称为服务器端脚本,例如ASP脚本、PHP脚本等),也可以直接在浏览器端运行(称为客户端脚本,例如JAVASCRIPT脚本)。客户端脚本经常用来检测浏览器、响应用户动作、验证表单数据以及显示各种自定义内容,如特殊动画、对话框等。客户端脚本产生之前,通常都是由WEB服务器程序完成这些任务,由于需要不断进行网络通信,因此响应较慢,性能较差。而使用客户端脚本时,由于脚本程序驻留在客户端上(随网页同时下载),因此在对网页进行验证或响应蝇虎动作时无需使用网络与WEB服务器进行通信,从而降低了网络的传输量和WEB服务器的负荷,改善了系统的整体性能。在网页中插入脚本语言通常有三种方式:使用SCRIPT标记符、在标记符中直接嵌入脚本以及连接外部脚本文件。第一种方式将SCRIPT标记符放在中用-在此编写JavaScript代码。/然后在中加载JAVASCRIPT中的事件;第二种方式直接添加JAVASCRIPT脚本的HTML代码。具体用法为:(JavaScript:在此编写JavaScript代码)放入标记符的事件中即可;第三种方式将JAVASCRIPT代码保存为一个后缀名为:.js的文件,再将此文件引用到你需要的文件的中引用方式为: 好了,有了以上三种技术,我们便可以将他们结合而形成一种新的技术DHTML技术。DHTML(Dynamic HTML),建立在原有的技术的基础上,可分为三个方面:一是HTML,也就是页面中的各种页面元素对象,它们是被动态操纵的内容;二是CSS,CSS的属性也是动态操纵的内容,从而获得动态的格式效果;三是客户端脚本,它实际操纵WEB页上的HTML和CSS。使用DHTML技术,可使网页设计者创建出能够与用户交互平包含动态内容的页面。实际上,DHTML使网页设计者可以动态操纵网页上的所有元素甚至是在这些页面被装载以后。利用DHTML,网页设计这可以动态操纵隐藏或显示内容、修改样式定义、激活元素以及为元素定位。DHTML还可使网页设计者在网页上显示外部信息,方法是将元素捆绑到外部数据源上。所有这些功能均可用浏览器来完成而无需请求WEB服务器,同时也无需重新装载网页。这是因为一切功能都包含在HTML文件中,随着对网页的请求而一次性下载到浏览器端。可见,DHTML技术是一种非常实用的网页设计技术。实际上,DHTML早已广泛地应用到了各类大大小小的网站中,成为高水平网页必不可少的组成部分。终于涉及到我编程的核心技术ASP.NET技术。ASP.NET的前身是ASP(Active Server Pages),以其简单的语法嵌入HTML的编辑方法,在很短的时间内获得巨大的成功,成了NT平台上 WEB技术的霸主,这种地位至今无人动摇。但随着PHP,JSP等技术的出现,ASP的王者地位受到了严峻的挑战。WEB技术的新贵JSP,它是有微软公司的竞争对手Sun公司出品,在执行效率、安全性等特性上已经完全超过了ASP,它更有着ASP无法比拟的跨平台性,使得JSP在Window、Unix、Linux主机上均使用。它的诞生,使得越来越多的人选择了能够跨平台使用的JSP。ASP 的用户日益减少,ASP面临着前所未有的危机。在这种情况下,微软提出了“.NET”构想,2000年6月22日,微软公司首次向外界公布了其宏伟的“Window.Net”计划,同时发布了下一代网络服务器框架(Next Generation Web Services Framework 简称NGWS)。在NGWS中人们首次看到了ASP+的身影。2000年11月,微软公司推出了Visual Studio.Net 7.0 beat1,同时扩展了NGWS的功能平将其更名为.Net Framework。此时,ASP+也更名为现在的ASP.Net。到此,ASP.Net正式推出了,那它到底有哪些先进的特性,现在就将让在下一一介绍。ASP.Net作为Web设计技术的一种,它的主要功能还是产生动态网页,以满足不同用户的需要。在网上见得最多的是HTML页面(文件的后缀名为.htm或.html),它只是将别人编辑好的WEB页面展现给大家,这种页面如果不动手去修改,是不会发生任何变化的。如果想在网页中访问数据库,这种纯HTML页面就无能为力了。这时就得依赖各种WEB技术。而ASP.Net作为一种新的WEB技术,它给了设计者一种全新的WEB设计概念。它将软件设计和Web设计融为一体。由于它和VB.Net,C#这些程序设计语言使用同一个.Net Framework对象开发库,可以想象ASP.Net所能实现的功能是多么强大。ASP.Net是一种建立在CLR(Common Language Runtime 通用语言运行机)基础之上的程序开发框架,它主要用于在服务器上开发功能强大的WEB应用,ASP.NET提供了下面一些超越以前的重要特性:1 优良的性能:ASP.NET在服务器上运行的是经过编译的CLR代码。与以前的技术相比,ASP.NET能够充分利用Binding(绑定),及时编译,本地优化,缓冲服务来提高程序的性能。2 大量工具箱的支持:在Visual S的开发环境中,ASP.NET因其丰富的工具箱和设计器而受到很高的赞扬。比如所见即所得的编辑方式,支持托放的服务器控件,以及动态的配置管理,这些都是被大受赞扬的。而这一些还只是其提供的强大特性的冰山一角,还有很多值得在实践中发掘。3 强大的功能以及良好的机动性:因为ASP.NET是建立在CLR基础上的,所以整个平台的功能和适用性更加适合网络应用程序的开发。CLR中基本的类库、消息、数据访问解决方案几乎来源于WEB思想。ASP.NET可以使用很多种编程语言来编写,可以选择最合适的那一种,甚至可以选用多种语言来编写。次外,CLR的协同工作能力保证以前开发的基于COM的程序,在移植到ASP.NET后,依然能够正常使用。这就意味着,以前的ASP程序依然可以正常运行。4 易用性:使用ASP.NET来完成一些普通的任务是很简单的事情。比如,ASP.NET页面构架允许建立用户接口,这样就能把代码与程序结构分离。写程序只需要考虑程序的结构,而不需要考虑怎样去书写代码,因为它们都事先已经写好了。5 崭新的配置管理方式:ASP.NET使用的是一种基于文本格式,等级式的配制系统,这种方式使得应用服务器环境和WEB应用的设置更加简单,因为配制信息是以文本格式储存的,新设置将不需要本地管理工具的帮助,也可使之生效。一个ASP.NET应用程序只需要将必须的程序拷贝到服务器上就可以使用了。甚至是替换其本身,而不是需要重启服务器。一个明显的例子就是服务器上的控件的替换和修改再也不需要重启服务器了。这个本是写DLL控件最烦人的事情,现在这种烦恼已不存在。6 可移植性和良好的适用:ASP.NET对多线程有着自己独特的一套操作方法,当一条线程出现异常情况后,一个新的进程会在它的地方重新建立,继续负担原进程所处理的任务。这就使得应用程序能够不中断地处理客户请求。7 超强的扩展性:ASP.NET崭新的结构体系允许开发者开发自己的插件。实际上,ASP.NET下任何一贯组件都能够被用户自己开发的组件扩展或替换。使用一种新的WEB技术,除了考虑效率外,最重要的是关心它到底提供了多少新功能使编写程序更加方便。下面我做一些简单的说明。1 ADO.NETASP之所以成功,在很大程度上是得益于微软提供的ADO(ActiveX Data Object)数据对象控件。ADO提供了很大的便利去存取数据库、XML数据。但是ADO也有局限性,比如一个RecordSet只能存放一个数据表的内容,如果需要同时操纵多个数据表,那就不得不打开多个RecordSet,这显得有些麻烦,其他WEB技术同样存在这样的烦恼。而这个问题在ASP.NET中可以获得很好的解决。在ADO.NET中,微软提供了一个新的操纵对象DataSet,这是一个功能非常强大的对象,在一个DataSet可以同时存放多个数据表。2 DataGrid微软其实提供三个数据显示控件:DataGrid、DataList、Repeater。但这三个控件数DataGrid功能最强,其次为DataList,最弱为Repeater,而DataGrid也有一个缺点它的字段长度很难控制,而另外两个可以用标记符加以控制。DataGrid的定义为:在其控件内部集成了很多方法,比如:分页技术,数据修改、删除等都以非常完善。3 丰富的WEB控件ASP.NET区别与其他的WEB技术的最明显特征是提供了丰富的WEB控件。在VB.NET中,可以使用很多控件来完成程序。很多年来人们都向往着在WEB技术上也能使用这些控件,现在这些梦想已经成真。现在也能在ASP.NET中使用这些与VB.NET控件拥有相同功能的各种WEB控件。从这里也可以看出微软公司试图将WEB设计与软件设计融为一体整体的设想。WEB控件的出现给编写程序提供了极大的便利。当熟悉WEB控件以后,程序只是对各种控件的属性进行修改,可以将精力集中在程序的逻辑结构上。4 支持事件处理(Event Handle)在ASP.NET中,会有两个最基本的事件Page_Load与Page_UnLoad,它们分别在页面被调用与页面释放时发生(当然这些都发生在服务器上)。可以在Page_Load事件中初始化一些数据,比如部分控件的属性、对数据库的访问等,在Page_UnLoad事件中关闭在程序中打开的数据库或者释放所占的内存空间。5 程序结构与代码的分离ASP.NET程序可以通过Code-Behind、用户控件、自定义控件以及组件这四种方法将程序结构与执行代码相分离,将面向对象的思维扩展到了一定的高度。当程序的逻辑结构一目了然,便可以将更多的时间放在代码的编写之上。当然本文介绍到这里已经将一些基本的网页技术都作了一番介绍,最后向大家介绍网页设计者的必修课SQL 语言。SQL的全称是Structured Query Language,译为“结构化查询语言”。它利用简单的语句来完成对数据库的存取操作。由于SQL的用法简单,所以它已经成为数据系统中使用最广泛的一种语言了。SQL虽然是一种语言,但同平常看到的C、C+、C#语言是不同的。它不能独立存在,必须依托于数据库系统,当然也就不可能像C、C+、C#一样建立应用程序。使用SQL语言,并不能直接操作数据库,它只是告诉数据库需要进行哪些操作,然后再由数据库系统去完成这些操作。SQL语言定义可以分为三大类:一、数据定义语言(DDL:Data Definition Language);二、数据操作语言(DML:Data Manipulation Language);三、数据控制语言(DCL:Data Control Language)。好了本文不可能将网页设计技术作详细的介绍,其实现在HTML技术已经正趋向XHTML和XML技术转化,XHTML和XML将比HTML有着更严格的语法限制(区分大小写),但XML语言不在受标记语言的范畴,并可以对数据进行描述。所以有着更好的发展前景。ASP.NET是一门综合的艺术,它需要我们将网页设计中各种技术加以融合,而最后形成精美的网页。四参考书目1网页制作教程主编:陈强 人民邮电出版社发行 2001年8月第1版2亲密接触ASP.NET作者:杜亮 清华大学出版社 2001年1月第1版3ASP.NET网页制作教程从基本语法学起作者:王国荣 华中科技大学出版社 2002年8月第1版4XML编程起步作者:清宏计算机工作室 机械工业出版社 2002年1月第1版 5SQL Server 2000设计与TSQL编程作者:美Michael Reilly,Michelle Poolet卢庆龄 王芹 李东 译 清华大学出版社 2002年1月第1版外文翻译Hiding/Manipulating Databound Items来自Steven Smith的文章隐藏和处理字段名史蒂文史密斯是AspA 和 AspA.两家网络的会长。他是微软ASP.NET最优秀的人员,同时也是ASP权威领域的会员。他是INETA演说者办公署的成员,已经是两本ASP.NET书的作者。他现在和他的妻子兼商业合作伙伴米歇尔以及他的女儿Ilyana生活在美国的俄亥俄州。ASP.NET提供一种强大的方法从数据包或XML文件中取得数据字段信息。然而,有时候你必须要将一部分的数据字段从数据源中绑定出来去完成某些任务。或许你需要数据源中的一些特定的数据格式或二次数据,因此你需要一些出色的能力去控制数据字段的显示。.在以下的例子中,你将经典处理onItemDataBound事件,直到你自如的控制onItemDataBound事件。这将带给你许多方便,但不幸的是源代码有点长。期望这个例子会有所帮助!首先,让我来解释一下这个来自现实的应用程序:一个我的网站ASPS上的有一般表达书库中ASP.NET的练习题,你可以单击这里来查看它的演示。你将在一会儿后看到它的演示效果。 至于我的有一般表达式书库中,我曾经用的几个字段刚好超出我的默认字段,所以我的DataGrid提供一个叫做“超出封装”。首先,我用一个用户名字段使它转向去连接用户的电子邮件。接着,我想限制每一个结果描述的字数显示在每一张搜索的网页上,为了防止页面由于显示的字数过多而使页面过长。(因为这个描述的信息在我的数据包中是以文本的形式存在,因此那会导致数据有几兆的大小)最后,我将做一个编辑连接,这将允许书库的管理者来编辑它,但我不想让它显示除非是当前的用户是书库的所有者。让我们看看这是如何实现的,首先我们看一看我的(相当冗长)的DataGrid报告,重要的部分在红色中被列出。 default.aspx的摘录在这个事件中,onItemDataBound的事件将对任何数据字段进行控制。你可以把这个事件用在DataGrid、DataList和Repeater等控件中。在上面的例子中,我把这个事件映射到我的dgRegexp_ItemDataBound事件中去处理。我们现在来看一看:default.aspx 中的摘录protected void dgRegexp_ItemDataBound(Object Sender, DataGridItemEventArgs e)/ For Items and AlternatingItems,/ convert userid to email link/ truncate description/ hide edit linkif not ownerif(e.Item.ItemType = ListItemType.Item| e.Item.ItemType = ListItemType.AlternatingItem)Trace.Write(ItemDataBound,e.Item.DataItem.GetType().ToString();int user_id=Int32.Parse(System.Data.Common.DbDataRecord)e.Item.DataItem)user_id.ToString();Trace.Write(ItemDataBound, user_id: + user_id.ToString();ASPAlliance.DAL.UserDetails objUser = ASPAlliance.DAL.User.getUserDetails(user_id);(System.Web.UI.WebControls.HyperLink)e.Item.FindControl(myuser).Text = objUser.first_name + + objUser.last_name + ( + objUser.email + );(System.Web.UI.WebControls.HyperLink)e.Item.FindControl(myuser).NavigateUrl= mailto: + objUser.email;Trace.Write(ItemDataBound,myuser.Text:+ (System.Web.UI.WebControls.HyperLink)e.Item.FindControl(myuser).Text);String desc= (System.Data.Common.DbDataRecord)e.Item.DataItem)description.ToString();if(desc.Length 100)desc = desc.Substring(0,99);desc += .;(System.Web.UI.WebControls.Label)e.Item.FindControl(description).Text = desc;ASPAlliance.DAL.Security sec = new ASPAlliance.DAL.Security(this.Request);if(sec.user_id = 0) | (sec.user_id != user_id) | (!sec.isAuthenticated)(System.Web.UI.HtmlControls.HtmlTableCell)e.Item.FindControl(editTD).Visible = false; 好,这就是我所举的一个例子,一点点少的“仅仅为了示范”的三行解释代码无法让我们明白。现在,我们将彻底的解释并展现在你眼前一些强大和难看的的东西,而这些东西实际上处在一个具有研究成果的位置上。但是不要害怕,你将在片刻之后完全明白它的含义。如果你还没有准备好(甚至你只懂VB),让我们打破常规。例子开始的6行只是声明我们的方法和抛出了一些注释。正如我所说的,我想在这儿做三件事情:使用户名转向电子邮件连接;截去描述字数的长度;当前用户不是管理员时隐藏编辑连接。这里唯一你真正需要去看的是确保你的第二个参数的类型转变成你所需要控制的。这是相当明显的,但是如果你不能理解它,你总是能在你所用的分类浏览器中考虑其特别的控制定义。对于VB.NET的使用者来说,正好需要转变对双斜杠到单斜杠的理解,除去大括号而且转变将类型参数跟随变量名的后面并在类型名之前加“AS”。接下来,我们需要确定我们所处理的字段类型是正确的。既然这个事件已经上升到控制每一个字段,包括有项目、隔行项目、分隔线项目、开头项目和结尾项目等。(完整的列表),我们需要叙述那一类我们所关心的项目。在这个例子中,我们只需要处理主要的控制片段,因此我们检查确定在这个问题中的项目不是所有的项目的就是隔行项目的。如果上面声明它将被处理,我们将从输入框中取得当前项目和e并且与我们所关心的项目的类型进行比较,对于使用VB的家伙,“|”意味着“或”的逻辑。注意:当我第一次写这个应用程序时我忽略了隔行项目的使用,因此用户显示的电子邮件显示成了其它项目。但是用户的帐号却被另一个所显示。好,我现在在程序中得到一些追踪帮我解决错误。这些追踪列出了当前项目的数据类型,好让我校正它实际上不是项目就是隔行项目的。在你执行这个程序时你可以不管这些。接着,我将取得用户的帐号。这是复杂的代码片段。让我在这里重复并从头到尾一端一端的加以解释。Int user_id = Int32.Parse( (System.Data.Common.DbDataRecord)e.Item.DataItem) user_id.ToString();让我们开始并将核心插入语以红色显示。这是C#类型控件的方法,并且必须要将当前数据字段类型转化到DbDataRecord类型。橙色的插入语完成这项操作。对于所有的目的和意图,橙色的插入语内容被考虑是一个 DbDataRecord。移动到绿色,这将允许我们涉及到这条记录中“user_id”元素,并使用C#的数组或集合语法(在VB将使用小括号带代替中括号),并且将内容转化到字符串,因为这是Int32.Parse所期望的。最后转移到黑色,Int32.Parse将字符型转化到整形。转变的结果被放在我的user_id的整形变量中。在下一行我有更多的诊断代码输出的user_id到追踪日志。好的,我们现在有了user_id,接下来的一大块代码使用了我写的一些自定义操作去处理我的用户。当任何人建立了IBuySpy应用程序后操作就被做成模型。在这个例子中,我的UserDetails类通过getUserDetails方法包含了用户名和用户的邮件地址。下一行是另一个复杂的块,虽然:(System.Web.UI.WebControls.HyperLink)e.Item.FindControl(myuser).Text= objUser.first_name + + objUser.last_name + ( + objUser.email + );再一次,从中央的大多数的parens开始,我们有另一个配合其型而决定的角色操作被完成。这个红色的代码被转化成橙色的代码是一个超级连接。这个橙色的代码被用来查找操作当前的项目中谁的ID是“我的用户”在我的DataGrid的列的模板中,我做了一个的标记符让这段代码加以引用。在这块代码的其他部分放置了超级连接的用户名和邮件地址的文本。这个超级连接在我的DataGrid中看起来象 这样。 在现在之前配合其型而决定的角色正变得越来越落伍,下一行如同前一行所做的事情一样,但是在这个例子中我们将设置超级连接的NavigateUrl属性到“mailto:”和我们用户的电子邮件地址。此外它们还被一些比较诊断的追踪跟随。(System.Web.UI.WebControls.HyperLink)e.Item.FindControl(myuser).NavigateUrl = mailto: +objUser.email;这就是为email所写的。任务已经完成了。现在如果代码太长我们想截去其描述部分。我们做这些使用了相同的技术。首先,我们将在它转换成一个DbDataRecord类型之后截取来自当前字段的“描述”。然后我们将其转化成字符串并把它赋给变量等(在一行中所有变量)。其次我们将要检查其长度是否超过个字符,如果是,我们将其转换到左边的字符(用Substring方法,在VB中使用Left()方法)并在结尾处添加“”告诉用户那里有更多的文本。最后,我们再一次在我们的模板使用FindControl句法去设置描述的label控件并在结果中设置文本属性。任务已经完成。接下去,这是对DataGrid和DataList要求最普通的特征:如何在数据字段的列表中隐藏详细的行和项目。在我的例子中,我用自己定义的安全控件去判断如果当前用户是一般表达书库的管理者。如果他们不是,或者如果他们不在连接的主机上操作将会作出鉴别,于是我将设置表格的单元把我的编辑标记符Visible属性置为假。为了达到这个目的,我通过增加runat=”server”到我的表格单元变为HTML控件并加了一个ID属性。我将表格单元命名为“ editTD”,并且在我的项目中可以用FindControl去定位单元格并存取其属性。这个单元格有它本身并在这里列出:a href=Edit.aspx?regexpid=title=Click to edit.Edit这就是它所有的。对大多数人来说,他们想知道如果它的值属性是空的应该怎样去隐藏这些东西。请你做相同的事情正如我在这里所做的一样,但是如果声明涉及到检查变量值的安全就需要替换。你将有可能使用(System.Data.Common.DbDataRecord)e.Item.DataItem)标记符在开始时去连接你的数据并加以检查它是否为空。这就是关于它的所有的。总结处理或隐藏数据列表或grid的个别字段并不是很困难一旦你知道一些技巧。虽然代码是非常复杂。在这张页面的代码能执行,最好的事情是它可以运用在任何例子上。你可以在ASPSmith的一般表达书库中执行时看到。如果你自己在解决这个问题时遇到了困难,我建议你首先将你的代码与我的比较一下,如果还是没有任何收获,询问一下ASP.NET在ASPNG data Listserv的专家,并确定在你提问时将包含你的失败的代码。创建DataGrid的动态模板列I作者:Bipin JoshiBipin Joshi是DotNetB的创建者。他开了一家提供软件发展、咨询和培训的名叫BinaryIntellect 咨询公司()。他同时也是微软.NET的最优秀人员。绪论几个月以前我写了关于怎样去创建DataGrid程序的文章。那篇文章解释了怎样去动态创建DataGrid的数据列的绑定。许多读者问我我们是否可以在模板列上做同样的事。这里分两部分解释那样做。它们实际上有两种方法去创建DataGrid的动态模板列使用LoadTemplate和执行ITemplate接口。在第一部分,我们将会讨论怎样使用第一种方法的i.e.运用LoadTemplate。模板是什么东西呢?ASP.NET的列表控制像DataGrid、DataList和Repeater都允许在通过使用一个叫“模板”的东西能适应性改变外表和感觉。正如名字所说的模板是一个为数据在一定的区域中显示的蓝色外表和感觉板。例如,开头模板在开头处的外表描绘成蓝色,相似的,项目模板描绘个别项目或DataGrid的一行。这些段被标记符像 和 所包围。载入模板的方法如果你看到页类的层次类,它就像这样:System.Object System.Web.UI.Control System.Web.UI.TemplateControl System.Web.UI.PageThe System.Web.UI.TemplateControl类包含一个名叫LoadTemplate的方法,它可以用来为模板控制去动态的加载模板。LoadTemplate的使用声明就想这样:public ITemplate LoadTemplate(string virtualPath);这种方法使用了使用者的i.e. .ascx的虚拟路径。为模板标记符创建自定义控制文件,我们必须将模板标记符放在.ascx文件中。记住这个标记符不应该包含真正的标记像。典型的这个文件中不应该包含其他标记符。注意一个文件仅仅为一种模板描述标记符。为了使用LoadTemplate方法的例子,我们现在将开发一个将DataGrid的个别模板列的例子。这个模板列仅仅包含一个Label控件,但是你也可以增加其它控件。我们的例子将会需要在下面遵从步骤给出:我们将创建一个新ASP.NET的WEB应用;创建一个新的WEB表单;创建一个为模板标记符自定义控制文件(.ascx);写代码到DataGrid的表单中;从.ascx文件中加载模板;从数据源中绑定数据到DataGrid。由上述步骤中在开始的两步对任何web应用程序都是一般的,我们在这里将不予讨论,因此让我们在为我们的模板创建一个自定义控制文件开始。为我们的例子使用的自定义文件,你有可能在你的工程中增加一个新的自定义文件(.ascx)。在文件中加以下标记符:asp:label ID=label1 Runat=server text=注意那个标记符看起来好象我们曾经在设计模块中用到它。这里,我们将把DataMember表中的lastname字段绑定到一个label控件中。将DataGrid放到表单中;把以下代码加到Page_load事件中string connstr = Integrated Security=SSPI;User ID=sa;Initial Catalog=Northwind;Data Source=MyServerNetSDK;SqlConnection cnn=new SqlConnection(connstr);SqlDataAdapter da=new SqlDataAdapter(select * from employees, cnn);DataSet ds=new DataSet();da.Fill(ds, employees);ITemplate temp= Page.LoadTemplate(webusercontrol1.ascx);TemplateColumn tc=new TemplateColumn();tc.HeaderText = Last Name;tc.ItemTemplate = temp;DataGrid1.Columns.Add(tc);DataGrid1.DataSource = ds;DataGrid1.DataMember = employees;DataGrid1.DataBind();大多数代码与你所期望相关的ITemplate的代码非常相似。我们用LoadTemplate方法来载入我们的模板。然后我们创建一个模板列并将项目模板放在里面。即使我们使用了项目模板,它可以用在其它类型的模板像编辑项目模板。我们再将这个新的列增加到DataGrid。注意我们的DataGrid是在类的阶段所声名的实例DataGrid1,因此在以上显示的代码并不可见。运行这个应用程序这后你将在DataGrid中得到一个名为“lastname”字段的模板列。总结在这篇文章中我们通过灵活的使用LoadTemplate方法将模板列加到DataGrid中。这种方法在你如果想使用相同的DataGrid来表示少数的在运行时改变列时运用。在下一篇文章中我们将看到通过执行ITemplate接口来怎样创建模板列。创建DataGrid的动态模板列II绪论 在第一篇文章中我们看见怎样使用LoadTemplate模板方法在DataGrid中去动态增加模板列。在这篇文章中我们将看到使用ITemplate接口来怎样去做。ITemplate接口这个接口建立在System.Web.UI名字空间中,它在以下的声明中有一种方法。void InstantiateIn(Control container);这个方法在被执行时受“父”模板的决定。执行ITemplate接口让我们通过创建自己的执行ITemplate开始。创建一个新的类并将以下代码加入:using System;using System.Web.UI;using System.Web.UI.WebControls;using System.Data;namespace DynamicDataGridTemplatespublic class CTemplateColumn:ITemplate private string colname; public CTemplateColumn(string cname) colname=cname; /必须执行以下方法 public void InstantiateIn(Control container) LiteralControl l = new LiteralControl(); l.DataBinding+=newEventHandler(this.OnDataBinding); container.Controls.Add(l); public void OnDataBinding(object sender, EventArgs e) LiteralControl l = (LiteralControl) sender; DataGridItem container = (DataGridItem) l.NamingContainer; l.Text =(DataRowView) container.DataItem)colname.ToString(); 这里,这个构造器接受我们想去绑定我们的模板列的列名。我们在示例中创建一个文字控件的方法。既然我们的列是数据绑定,所以我们增加了OndataBinding事件去处理使得控件有适当的属性。然后我们将这个文字控件加到容器的控件集中。在OndataBinding事件处理中把命名容器给了当
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 光储一体化系统调度与控制方案
- 风电系统调度与负载管理方案
- 公路施工过程中的噪音控制方案
- 2025年女装行业研究报告及未来行业发展趋势预测
- 中小学班主任基本功比赛笔试试题附答案
- 漏钢整改措施范文
- 公园停车管理与运营方案
- 所技术操作规程指南
- 2025年复合床垫行业研究报告及未来行业发展趋势预测
- 2025年盘发器行业研究报告及未来行业发展趋势预测
- 减盐减糖减油烹饪技巧培训
- 民航英语说课课件
- 护士法律法规培训内容
- GB 2894-2025安全色和安全标志
- 跨境电商风险管理-洞察阐释
- 教师数字提升培训课件
- 中西医结合医院“十五五”发展规划
- 消化性溃疡疾病的护理
- 2025-2030年中国少儿期刊出版行业市场深度调研及前景趋势与投资研究报告
- 2025年河南开封水务投资集团有限公司招聘笔试参考题库含答案解析
- JG/T 220-2007铜铝复合柱翼型散热器
评论
0/150
提交评论