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

ASP.NET
asp.net GridView控件中模板列CheckBox全选、反选、取消
asp.net GridView 删除时弹出确认对话框(包括内容提示)
asp.net DropDownList 三级联动下拉菜单实现代码
asp DataTable添加列和行的三种方法
Asp.net 页面调用javascript变量的值
asp.net 长文章通过设定的行数分页
asp.net 定时间点执行任务的简易解决办法
asp.net 页面延时五秒,跳转到另外的页面
asp.net 动态输出透明gif图片
asp.net DataList与Repeater用法区别
asp.net Javascript获取CheckBoxList的value
asp.net程序在调式和发布之间图片路径问题的解决方法
asp.net下生成英文字符数字验证码的代码
asp.net 页面版文本框智能提示JSCode (升级版)
ASP.NET URL伪静态重写实现方法
ASP.NET 2.0 中Forms安全认证
asp.net 动态添加多个用户控件
asp.net Repeater显示父子表数据,无闪烁
asp.net 无法获取的内部内容,因为该内容不是文本 的解决方法
asp.net GridView排序简单实现

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 58 ::
收藏到网摘: 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显示了多少次的方法。因此,我在这个控件中加入