当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  C#+ASP.NET 2.0定制复合组件之基础篇(1)

 C#+ASP.NET 2.0定制复合组件之基础篇(1)

点击次数:28 次 发布日期:2008-11-26 12:21:16 作者:源代码网
源代码网推荐     
源代码网推荐   您现在的位置:天新网 > 软件开发 > .Net开发 > ASP.NET
源代码网推荐  http://dev.21tx.com 2006年08月21日 Yesky
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐  每日文章精萃
源代码网推荐  .Net:在VS2005中打造自己的Starter Kits Java:通过ODBC?JDBC和SQL专用JDBC驱动实
源代码网推荐  ASP:披着羊皮的大野狼 ASP中Session技巧 PHP:PHP设计聊天室步步通
源代码网推荐  JSP:JSP内部对象详解(1) CGI:Perl教学 第十二篇 Perl5中的引用之
源代码网推荐  VB:已将 TextBox 的 Alignment 属性设为 VC:使用Visual C++工具条
源代码网推荐  
源代码网推荐  
源代码网推荐  [被屏蔽广告]1 2 3 下一页
源代码网推荐  
源代码网推荐  摘要:在本系列文章中,我们首先讨论使用ASP.net 2.0构建一个标准ListBox控件的增强版本(EnhancedListBox)。这个控件能够对它的项进行重排序,并且能够实现客户端与服务器端的同步功能。然后,我们把这样的两个控件组合起来创建一个复合控件(ListMover)。
源代码网推荐  
源代码网推荐    一、 引言
源代码网推荐  
源代码网推荐    构建提供丰富的客户端接口的复杂Web控件经常需要把一些客户端JavaScript代码与控件的服务器端代码集成到一起。然而,在一些情况下,为了达到某种巧妙的效果而把问题搞得过于复杂经常会破坏控件的内部服务器代码与生成的客户端HTML代码之间的数据同步,而当进行页面回寄时这将成为一个问题。在本文中,我将首先构建两个“很酷”的Web控件(都极容易导致这一问题),然后向你展示如何来修改这一“脆弱性”。
源代码网推荐  
源代码网推荐    本文中,我们将使用C#+ASP.NET 2.0来定制这些控件,并在后面向你简短介绍如何使之工作在ASP.NET 1.1(或1.0)环境中。
源代码网推荐  
源代码网推荐    当前,HTML仍然保持为Web应用程序生成阶段的主要语言。遗憾的是,它所使用的协议是无状态的,所以必须由Web开发者自己来处理这种无状态特点。通过使用一些架构特征,例如回寄机制和ViewState变量,ASP.NET有助于处理这个问题。然而,为了实现某些功能,还需要再作努力,从而借助于回寄事件把Web页面不断向服务器发出请求的各种技术结合起来。
源代码网推荐  
源代码网推荐    具体地说,我将分析如何使用JavaScript和DHTML存取在客户端生成的元素。其实,把客户端和服务器功能融合到一起要求使用大量的技巧才能达到最佳用户体验效果,而微软在其ASP.NET校验控件中就实现了这一点。为了提供一种丰富的客户端校验效果,该控件中使用了大量的JavaScript。
源代码网推荐  
源代码网推荐    作者注:本文假定你对定制Web控件开发有一个基本了解。因此,我将不再重复Web控件开发的基础内容,例如属性工作原理与风格的添加方式。
源代码网推荐  
源代码网推荐    二、 一种常规实现方法
源代码网推荐  
源代码网推荐    下面,我想向你展示如何构建一组很酷的控件,它们具有你在商业控件中才能看到的优秀功能。稍后,我将继续展示定制Web控件带给Web编程的完全封装优点。既然你已经了解如何开发定制Web控件,那么你应该知道的一个概念是封装一个控件所有的功能和行为(就象你在一个标准业务对象中所实现的那样)。在学习构建具有复杂行为的控件时,这种封装将极有用处。
源代码网推荐  
源代码网推荐    在第一个控件中,我将向你展示如何构建一个称为EnhancedListBox的控件。这个控件将扩展ASP.NET的ListBox控件—添加一个头部和一些重排序按钮。注意,这是一个直接继承自常规ListBox的控件。
源代码网推荐  之后,我还将向你展示如何构建一个复合控件—ListMover,它将包含两个上面提到的EnhancedListBox控件。这个ListMover控件还包含一些允许你从一个列表到另一个列表中移动项的按钮。
源代码网推荐  
源代码网推荐    其实,用常规方法(非面向Web控件的)来实现这种ASP.NET功能也并不困难。首先,你要把一个常规ListBox控件拖动到你的Web表单上并且使用一些数据填充它。
源代码网推荐  
源代码网推荐    然后,再添加一个标签用作标题,还有一组按钮用作重排序按钮。捕获这些按钮的服务器端事件是ASP.NET中的标准操作;因此,你只需要使用一种方法来取得当前选定的项并且根据用户点击的按钮从而把它放到该列表中的更高或更低的位置即可。例如,你可能编写如下的代码实现移动列表中的一项。
源代码网推荐  
源代码网推荐  i_Index = ListBox1.SelectedIndex;
源代码网推荐  o_Item = ListBox1.SelectedItem;
源代码网推荐  ListBox1.Items.RemoveAt(this.SelectedIndex);
源代码网推荐  i_Index--;
源代码网推荐  if(i_Index < 0) i_Index = 0;
源代码网推荐  ListBox1.Items.Insert(i_Index, o_Item);
源代码网推荐  
源代码网推荐    下面,让我进行简单的分析。首先,我保存了当前的列表中选定项的索引值与当前项。然后,我在当前位置删除该项;之后,在一个较低位置(上一个索引值减1)重新插入该项。这里的逻辑非常简单,那么为什么我还要说明这个问题呢?
源代码网推荐  
源代码网推荐    借助于这种常规的ASP.NET编程方法,Web表单上面的重排序按钮将会引发一个实现ListBox中重排序的服务器端事件。这是由一个到服务器的回寄触发的;因此,这个回寄可能是一次“繁重的”往返,具体要信赖于表单上的具体内容及因特网速度。
源代码网推荐  
源代码网推荐    然而,因为这一代码实现的是一个标准ASP.NET回寄过程,所以由ASP.NET使用它的ViewState机制来负责状态处理。当再次生成页面时,列表框内容按要求的顺序正确生成。
源代码网推荐  
源代码网推荐    当然,你也可以使用与此相同的常规方式在ListMover控件中重新创建这个功能。篇幅所限,我在此省略,只好留待读者您来实现。这个Web表单上包含一对ListBox,还有一些指示从左向右或从右向左移动的按钮。这些按钮的服务器端事件将从一个ListBox中提取选择的项,然后把它添加到另一个列表中;反之亦然。如在刚才的例子中所展示的,ViewState在此能够完好工作以保持这两个ListBox中的项。
源代码网推荐  
源代码网推荐  
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华