当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET 打造互联网未来空间站(4)

ASP.NET
使用函数传递参数来执行相应的数据库操作
如何实现在窗体和窗体之间进行传递数据
ASP.NET中文显示之两种解决方法
ASP.NET、JSP及PHP之间的抉择
ASP.NET 2.0发送电子邮件中存在的问题
谈谈HtmlControl与WebControl的区别与用途
从ASP.NET 1.1升级到ASP.NET 2.0要考虑的Cookie问题
通过系统配置来提高ASP.NET应用程序的稳定性
妙用ASP2.0中的URL映射改变网址
AJAX实现web页面中级联菜单的设计
ASP.NET跨页面传值技巧总结
再议ASP.NET DataGrid控件中的“添加新行”功能
Geometry 对象浅析
重构CollapsibleSplitter
如何利用.NET Framework使用RSS feed
ASP.NET获取IP与MAC地址的方法
在ASP.NET 2.0中使用样式、主题和皮肤
ASP.NET中为GridView添加删除提示框
ASP.NET 2.0,无刷新页面新境界
看看一个.net版对话框控件

ASP.NET 打造互联网未来空间站(4)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 56 ::
收藏到网摘: n/a

我注意到这里有一个ASP的tag,他的作用是标示一个控件吗?
是的,他的前缀,ASP的前缀。表明这是一个ASP的控件,后面的部分表示这是一个服务器端的控件,是在.NET框架下定义的。我么也可以形成我们自己的控件并且给他们一个独立的前缀,实际上我们已经为我们的站点定义了一些我们内部使用的控件。好,现在,我们看一下这个程序的运行结果,这个运行结果与上面的结果相似,所不同的是数据库访问依赖的是SQL provider,另外,增加了一个小小的定义背景色的属性。我们这个程序与上面的程序的设计基本相同,但是却很容易添加这样的属性,我们每天都用这样的方式处理成吨的表格、添加许多种其他的属性。实际上,这也是使用服务器端控件的好处,他能使我们更容易在HTML中表现方法和属性,他使得编程工作更容易,更快捷。


因此,我们看见这段代码与前一段代码的主要区别是他不需要让程序员编写遍历整个records set的WHILE循环。也不需要在HTML中的某个合适的位置显示结果。你可以很简单的生成一个表,然后告诉他:你的值来源于records set。
对的,是这样的。刚才有一件事情我跳过去了,就是你说的那件事情。我们回过头来在看一下那段代码。我们用名字调用这些data grid并且将他们捆绑到来源于data set的结果以及 data set.中的一个特定的表格,接下来的工作就可以使用这些数据了。
dgCustomers.DataBind()

上面的例子是一个将一个很简单的表格显示在屏幕上的程序,这种表现方式看起来是简单有效的,但是,对于一个比较复杂的表格,还要进行很多次的复杂运算以及显示更为花哨的字符串等要求的程序仍然可以用同样的方式遍历整个records set吗?
当然可以,这实际上是.NET服务器端控件的一大特点。我们很容易对datagrid做一些客户化的定制工作,因为,他是一个很基本的原始表格。也可以对datalist做一些客户化的工作,使他的每一行或者每一个单元对应一条记录。我们可以通过循环的方式用模版定制他的每一个重复的地方,有一种repeater数据控件,允许完全用模版定制他的每一步,因此,我们有一个头模版和一个一个尾模版分别定义了模版的起始和模版的终止。我们还有一些item 模版和一些 alternating item 模版,他们可以为我们提供更多个性化的设计。我们还有很多的好东西放到了网站ASPNextGen.com上面,在那里我们用data repeater作了许多的工作,同时也提供了更多的客户化的输出。

太好了,太好了,我可以像现出那些激动人心的功能,刚才你提到了你可以开发你自己的控件放到页面上去,如果现在的table grid控件不能够满足你的需求,你可以写一些自己的代码并将改造过的控件应用到任何你想要用到的地方。
是的,不过最有意思的是,你不仅仅可以定制你自己编写的控件,而且还可以扩展服务器端组件的功能例如我可以扩展data grid功能,以满足我自己的特殊的需求。做这些事情,我们可以使用我们完全编译的服务器端控件,也可以使用一种另外一种控件---用户控件(user control)。用户控件是一种中间件,他介于页面控件和服务器控件之间,你可以通过用户控件显示方法和属性,也可以表现更多的功能。

开发这些额外的用户控件要比单纯写一个ASP的程序复杂,但是可以获得更加强大的功能,是这样的吗?
你提了一个好问题。开发用户控件的复杂性会令你非常吃惊的。如果你创建一个ASPC类型的文件,并且写一些HTML在文件里面,你就已经拥有了一个最简单的用户控件。如果你想让一个页面内容包含在每一个页面里面,你可以将这个页面定义为一个HEADER,像使用INCLUDE文件那样使用它。你可以很容易在你的用户控件中包含HTML的结果。因此,最简单的用户控件程序就是HTML程序。此外,如果我想用同样的方式在这些页面中加入一些代码,我可以在用户控件中提供一些功能并且暴露一些属性。例如,我想在每个页面上设置我的用户控件背景色,我可以在我的用户控件中暴露背景色属性,
但是,从另外一个角度来看,这将会是一件相当复杂的工作。例如,你要做一个服务器的控件,一个 data grid 控件不会很容易地。因为它涉及到NET框架中的一些东西。有一种创建此控件的方法,必须发生在提交方法之前,发生在子控件被提交页面之前。因此,如果你要做数据绑定或者设置背景色等工作,你就应该在合适的时间内完成,否则当该页面被提交时,你将得不到你想要的东西。如果从这些方面来看,做这种控件将会是是一件复杂的事情。我曾经做过一个控件,一个ad rotator控件。它相当于.NET服务器控件的一个子控件。它可以绑定到一个XML文件上,该文件完成的是当页面被访问时在你的的站点上显示不同的广告。在他的存储表单里面,有一个图像的URL指向图像文件,一个导航URL,当你点击广告时,该URL将你带到与该广告相关的那个页面。这个页面是不固定的,因为它涞源于不同的厂商。该页面可以是图像,也可以是文字。
到目前为止他还没有提供给我们找到那个BANNER显示了多少次的方法。因此,我在这个控件中加入