`
yanhuanwang
  • 浏览: 55896 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

[翻译]在asp.net 2.0中使用WebParts

阅读更多
原文地址:http://dotnetslackers.com/articles/aspnet/UsingWebPartsInASPNet20.aspx
[译者改后代码下载]


[翻译]在asp.net 2.0中使用WebParts


原文发布日期:2007.03.01
作者:Abdul Sami
翻译:webabcd


介绍
如果说WebParts是web中一个非酷的效果的话,我想没有人会怀疑。WebParts为我们提供了对页中的对象进行拖拽的功能,它也可以在runtime的时候改变对象的标题、边框样式等。在WebParts出现之前,要实现这个功能是一项令人非常头痛的工作,因为我们必须写大量的JavaScrip,还要把页中每个对象的状态保存到数据库中。


WebParts有两个基本的东东
    ·WebPartManager
    ·WebPart Zones


WebPartManager
WebPartManager用来管理所有的webparts。如果你想在你的web站点中使用webparts就必须要使用WebPartManager。它的作用是提供你在页中进行拖拽的JavaScript代码

WebPart Zones
WebPart Zones中有4个zone
    ·WebPartZone
    ·EditorZone 
    ·CatalogZone 
    ·ConnectionZone


WebPartZone
WebPartZone是webparts里最基本的单位。通过在WebPartZone里放置不同的内容,我们就能够允许用户在页上对其进行拖拽。你可以在你的页上增加一个DropDownList以实现使用不同zone的功能,该DropDownList的选项如下
    ·Browse
    ·Design
    ·Edit
    ·Catalog
    ·Connect

在DropDownList的SelectedIndexChanged事件里粘贴如下代码(这里假设DropDownList的id是“cmbOptions”,WebPartManager的id是“WebPartManager1”)
if (cmbOptions.SelectedValue == "Design")
{
  WebPartManager1.DisplayMode 
= WebPartManager.DesignDisplayMode;
}

else if (cmbOptions.SelectedValue == "Browse")
{
  WebPartManager1.DisplayMode 
= WebPartManager.BrowseDisplayMode;
}

else if (cmbOptions.SelectedValue == "Catalog")
{
  WebPartManager1.DisplayMode 
= WebPartManager.CatalogDisplayMode;
}

else if (cmbOptions.SelectedValue == "Edit")
{
  WebPartManager1.DisplayMode 
= WebPartManager.EditDisplayMode;
}

else if (cmbOptions.SelectedValue == "Connect")
{
  WebPartManager1.DisplayMode 
= WebPartManager.ConnectDisplayMode;
}


Browse mode
Browse mode是webparts的默认模式。在Browse mode中虽然我们不能拖拽webpart,但是可以在webpart上看到两个选项,最小化和关闭。最小化一个webpart会显示它的最小化状态,如果选择关闭的话我们就只能在Catalog mode下重新恢复它,稍后我们会讨论它。这里有一个Browse mode下简单的webpart的图例



Design mode
在Design mode中我们就可以在两个webpart对象间进行拖拽了。我这里有两个webpart,分别被命名为“Links”和“Search”。下图示例了把“Links”拖拽到“Search”的情况



Edit Mode
Edit Mode允许你在runtime中编辑webpart。编辑webpart是一个比较深层次的应用,它分为4个类型:Appearance、Behavio、Property和Layout。我们首先来看看如何使用Appearance和LayoutEditorPart


Appearance和LayoutEditorPart
首先在web form上放置一个EditorZone。然后在EditorZone里放置一个AppearanceEditorPart和LayoutEditorPart。运行这个程序,从DropDownList中选择编辑模式。在可用的webpart上单击菜单的编辑按钮。


你会看到如下图所示的显示


你可以在这里改变webpart的标题。我们也可以看到编辑模式下的一些基本选项。镶边类型是边框和标题的样式。镶边状态可以让你设置是否最小化它


PropertyGridEditorPart
通过使用属性编辑器我们可以改变webpart中对象的属性。在我们的例子中将示例如何改变对象的CssClass属性。我们将用与解释AppearanceEditorPart和LayoutEditorPart相同的方法来说明它

在webform上放置一个EditorZone。然后在EditorZone里放置一个PropertyGridEditorPart。为了使用EditorZone我们需要在你的项目里新增一个用户控件。在这个用户控件里放置一个TextBox,然后再把这个用户控件放到web form的webpart里。该用户控件的后置代码如下
string _cssClass = "FrmTxtBox";
[WebBrowsable(), Personalizable(
true)]
public string CssClass
{
  
get return _cssClass; }
  
set { TextBox1.CssClass= value; }
}


protected void Page_Load(Object sender, EventArgs e)
{
  TextBox1.CssClass 
= CssClass;
}

上面的代码用于改变TextBox的CssClass属性。这个属性可以在webpart的编辑模式中修改,同时我们也可以在runtime的时候改变它。此外我们也给CssClass附加了两个修饰属性
    ·WebBrowsable - 允许webpart在编辑模式中显示用户定义的属性 
    ·Personalizable - 允许属性是可编辑的

现在运行这个页。如果我们设置了WebPartManager为编辑模式的话,就将会看到webpart的菜单选项中出现了编辑按钮。截屏如下


在webpart的菜单中单击编辑按钮,就会看到编辑模式里有一个CssClass属性。截屏如下:


我们可以看到TextBox使用FrmTxtBox作为默认值(样式表的class)。这个样式把边框的颜色定义为黑色。我们现在可以使用不同的样式class,比如我们有一个名为“CustomClass1”的样式class,它定义为没有边框。输入这个值后按OK按钮,你将会看到新的边框样式


使用这种方法我们就可以改变webpart里对象的属性


Catalog mode
Catalog mode给我们提供了在运行时添加和移除webpart的选项。例如,如果我们有一些模块,如天气模块、新闻模块、购物模块和占卜模块等等。如果想在运行时给用户提供显示和隐藏这些模块的选项,我们就可以使用Catalog mode来完成这项任务。


CatalogZone
CatalogZone分为3个类型,分别是PageCatalogPart、DeclarativeCatalogPart和ImportCatalogPart。在webform上增加一个CatalogZone,然后在CatalogZone内添加之前提到的3个类型。当webpart被关闭后我们可以用PageCatalog来帮我们来显示webpart,截屏如下:


PageCatalogPart用于显示被关闭的webpart列表。DeclarativeCatalogPart用于显示该声明下的webpart列表。图例如下:



ImportCatalog
ImportCatalog用来显示导入的webpart列表。我们可以导入扩展名为.WebPart的文件。如果要导出类型为.WebPart的文件你需要在web.config增加如下元素
<webParts enableExport="true"></webParts>

然后我们有两种方法可以实现导出功能
设置控件的属性ExportMode的值为All。如果你的控件继承自WebPart就可以这么做,代码如下
<aspSample:CustomWebPart id="Sample" runat="server" ExportMode="All" />

或者在Page_Load里写如下代码
GenericWebPart gwp = WebUserControl2_1.Parent;
gwp.ExportMode 
= WebPartExportMode.All;

通过导入功能我们就可以增加任何webpart了,图例如下



Connect mode
Connect mode允许各个webpart之间可以互相通信。用户可以依照他们的需要在运行时创建他们的连接。这个连接并不是让webpart连接到数据库,而是webpart之间的互相连接。例如,如果有一个webpart里包含一个grid,它要根据用户的输入显示相应的记录,而用户使用的TextBox在另一个webpart里,此时就要使用Connect mode发送数据。

在我们的例子里,我们将在一个页里放置两个webpart。一个负责用户输入,另一个负责显示。在你的web站点里新建两个用户控件,分别命名为“Provider”和“Consumer”,并把它们放到相应的webpart里。在App_Code文件夹里新建一个名为“ITextProvicer”的类。代码如下:
public interface ITextToPass
{
  
string GetText();
}

我们会在Provider和Consumer两个用户控件中使用这个接口,以实现在这两个实体之间传送数据

在Provider用户控件里放置一个TextBox,并输入如下后置代码
public partial class ProviderWebPart : System.Web.UI.UserControl, ITextToPass
{  
  [ConnectionProvider(
"TextToPass""TextProvider")]
  
public ITextToPass GetTextTransferInterface()
  
{
    
return ((ITextToPass)(this));
  }


  
public string GetText()
  
{
    
return TextBox1.Text;
  }

}

你可以看到它实现了我们刚刚创建的ITextToPass接口。通过使用这个接口,我们可以返回用户输入的文本并传递给Consumer用户控件。

下一步在Consumer用户控件里放置一个Label,并在.cs文件里添加如下代码
[ConnectionConsumer("Text""TextConsumer")]
public void GetTextTransferInterface(ITextToPass provider)
{
  Label1.Text 
= provider.GetText();
}

现在选择WebPartManager的Connection mode,我们就可以在webpart的菜单上看到“连接”选项


当我们单击了webpart菜单的“连接”的时候,会看到如下图所示的情况


单击“创建提供者连接”,你会看到如下所示。然后从DropDownList里选择“Consumer”选项。


一旦创建完连接,就允许你在“Provider”中输入文本,如下图所示


单击按钮后“Consumer”的Label控件就会显示你输入的值


通过这种方法我们就可以在webpart之间传输数据。


保存页面状态
在运行我们的项目之前,有一个问题就是如何保存不同用户的不同页面状态呢?为了保存用户对页的修改,我们就需要把这些设置保存到数据库里。在我的例子中使用到了注册和登录控件。

首先你要在你的web.config设置验证模式为“Forms”。然后在你的项目中新建一个webform并取名为Login.aspx。拖拽一个Login控件到页上,设置它的DestinationPageUrl属性为Default.aspx。在你的项目中再新建另一个webform,取名为Signup.aspx,拖拽一个CreateUserWizard控件在此页上。如此用户就可以注册和登录了。另外你还要确保SqlExpress服务正在运行中。我们使用asp.net自动在App_Data文件夹内创建的ASPNETDB.mdf为默认数据库。这个数据库已经提供了保存不同用户的不用页设置的相关表和存储过程。其在Visual Studio环境中的截图出示如下


“PersonalizationPerUser”表就用于保存每个用户的不用页设置状态。它将一个序列化的值保存到PageSettings字段里。幸运的是我们不用接触这个表,因为asp.net 2.0给我们提供了必需的API


创建数据库
为了创建一个数据库来保存我们的页设置状态,需要运行“aspnet_regsql.exe”工具。这个工具在本地的\Windows\Framework\v2.0.50727文件夹里。它可以帮助我们创建所需的表和存储过程。该工具向导的截屏如下


该工具会创建如下这些表


最后我们要做的工作就是在web.config里做一些配置。下面将告诉你如何做,基本上就是要确保启动Membership和Profile特性。请注意其中的<Clear />标签,它将移除machine.config中的相应标签。我们还要增加一个连接字符串以指向我们的数据库,我把它命名为“Database1”
<connectionStrings>
 
<clear/>
 
<add name="LocalSqlServer" 
   connectionString
="data source=127.0.0.1;database=Database1;
   user id=sa ;password=sa"
/>
</connectionStrings>
<system.web>
 
<compilation debug="true"/>
 
<authentication mode="Forms" />
 
<membership>
  
<providers>
  
<clear/>
  
<add name="AspNetSqlMembershipProvider" 
    type
="System.Web.Security.SqlMembershipProvider, System.Web, 
    Version=2.0.0.0, Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"

    connectionStringName
="LocalSqlServer"
    applicationName
="/CustomConnections" />
  
</providers>
 
</membership>

 
<profile enabled="true" defaultProvider="TableProfileProvider">
  
<providers>
  
<clear/>
  
<add name="TableProfileProvider"
     type
="Microsoft.Samples.SqlTableProfileProvider"
     connectionStringName
="LocalSqlServer"
     table
="asdspnet_Profile"
      applicationName
="/CustomConnections"/>
  
</providers>
  
</profile>
</system.web>


总结
webparts为我们提供了一个在运行时自定义web站点的简单方法。它是从SharePoint中提取出来,并引进到asp.net 2.0中的。我们已经在本文中测试了它的一些基本用法,如使用不同类型的webpart和使用自定义数据库等等。

webabcd 2007-04-02 08:57 发表评论
分享到:
评论

相关推荐

    在asp.net 2.0中使用WebParts

    【在ASP.NET 2.0中使用WebParts】 ASP.NET 2.0引入了一项强大的功能,即WebParts,它允许用户自定义和交互网页内容。WebParts为开发者提供了构建高度可配置和交互式Web应用程序的框架。在这个系统中,用户可以动态...

    天轰穿ASP.NET2.0视频教程代码(共两部份)

    此"天轰穿ASP.NET2.0视频教程"针对初学者和进阶开发者,通过详细的教学指导,帮助用户掌握ASP.NET 2.0的核心概念和技术。 1. **ASP.NET 2.0架构** ASP.NET 2.0基于.NET Framework 2.0,引入了统一的页面生命周期...

    ASP.NET 2.0程序设计案例教程(课件)

    ASP.NET 2.0是微软开发的一个用于构建Web应用程序的框架,它是在.NET Framework 2.0版本上构建的。本教程重点在于通过实例教学,帮助学习者掌握ASP.NET 2.0的核心概念和技术,从而能够高效地开发动态网页和企业级...

    圣殿祭司的ASP.NET 2.0开发详解c# 书中例子代码

    在《圣殿祭司的ASP.NET 2.0开发详解——使用C#》一书中,作者深入浅出地介绍了ASP.NET 2.0的核心概念和技术,结合C#编程语言,帮助读者掌握Web开发的关键技能。 首先,ASP.NET 2.0引入了许多创新特性,如控件事件...

    asp.net2.0教程

    ASP.NET 2.0是微软推出的用于构建动态网站、Web应用程序和Web服务的框架,它是在ASP.NET 1.x的基础上进行的一次重大升级,引入了许多新特性,提升了开发效率和性能。本教程将深入探讨ASP.NET 2.0的核心概念和技术,...

    ASP.NET 2.0 XML高级编程

    8. **XML WebParts和个性化**:XML WebParts是ASP.NET 2.0中实现用户自定义和内容共享的组件,利用XML存储用户偏好和配置信息。书中将讨论如何开发和使用XML WebParts以提高用户体验。 9. **安全性**:处理XML数据...

    ASP.Net 2.0 开发技术大全 -- 005

    ASP.NET 2.0是微软推出的用于构建动态网站、Web应用程序和Web服务的框架,它在.NET Framework 2.0之上构建,提供了丰富的功能和工具,使得开发者能够更高效地创建交互式、数据驱动的Web应用程序。在这个"ASP.Net 2.0...

    asp.net2.0.zip asp.net2.0.zip

    9. 0207.wmv文件:虽然这个文件名没有提供足够的上下文,但通常在ASP.NET开发中,视频教程可能涵盖如何使用ASP.NET 2.0的新特性,或者演示如何开发和调试Web应用程序。 总之,ASP.NET 2.0是一个强大且功能丰富的Web...

    Professional ASP.NET 2.0.pdf

    根据提供的文件信息,我们可以推断出这是一本关于ASP.NET 2.0的专业书籍,书名为《Professional ASP.NET 2.0》,由多位作者共同编写,包括Bill Evjen、Scott Hanselman、Farhan Muhammad、Srinivasa Sivakumar 和 ...

    《精通ASP.Net 2.0网络应用系统开发》随书光盘ch06

    在《精通ASP.NET 2.0网络应用系统开发》这本书中,作者马军深入探讨了ASP.NET 2.0的关键技术和实践方法。随书光盘中的"ch06"包含了第六章的示例代码,这些代码是理解和掌握书中理论知识的重要实践素材。 第六章可能...

    ASP.NET 2.0入门经典1

    5. WebParts和个人化:ASP.NET 2.0的WebParts允许用户自定义页面布局和功能,提高了用户体验的个性化程度。 6. Themes和Skinning:主题和皮肤机制使得开发者可以统一和快速地更改网站的外观,提供了强大的样式和...

    ASP.NET2.0网络编程从入门到精通光盘

    本资源"ASP.NET2.0网络编程从入门到精通光盘"旨在帮助初学者及有一定基础的开发者深入理解和掌握ASP.NET 2.0的各个方面,通过提供的源代码示例,可以更直观地学习其编程技巧。 在ASP.NET 2.0中,主要包含以下关键...

    ASP.NET 2.0技术详解与应用实例 源码

    本书的后四章介绍了ASE.NET2.0 Person Starter Kits,ASE.NET 2.0 Club Starter Kit,ASE.NET Classifieds Starter Kit和ASE.NET Time Tracker Start kit的实现要点,进一步说明了ASENET2.0新技术的实际使用。...

    VCG.rar_VCG_asp.net 2.0_asp.net2.0_www.vcg.c

    【ASP.NET 2.0 知识点详解】 ASP.NET 2.0 是微软公司推出的一种基于.NET ..."VCG_asp.net 2.0_asp.net2.0_www.vcg.c"这个标签可能是指这个组件是与VCG网站(www.vcg.c)相关的,专门用于ASP.NET 2.0环境下的验证服务。

    ASP.NET 2.0快速入门(14):ASP.NET 2.0管理你的asp.NET应用

    通过学习这个系列教程的第14部分,你将掌握ASP.NET 2.0在管理和维护Web应用程序方面的核心概念和技巧,从而能够更有效地构建和优化你的ASP.NET应用。提供的"0119pm.wmv"视频文件很可能是该教程的一部分,建议观看以...

    精通 ASP.NET 2.0 + SQL Server 2005 项目开发

    在本书中,读者将学习如何使用ASP.NET 2.0创建用户界面,与SQL Server 2005进行数据交互,以及如何设计和实施数据库。具体包括以下几个核心知识点: 1. **ASP.NET 2.0控件**:了解各种服务器控件,如Label、TextBox...

    精通ASP.net 2.0 课件

    Web Parts是ASP.NET 2.0中的一个创新特性,允许用户在Web页面上自由组合和定制内容。用户可以添加、删除、移动和配置Web部件,实现高度可定制的个人化体验。 【ViewState管理】 ASP.NET 2.0的ViewState机制用于在...

    ASP.NET 2.0快速入门(8):ASP.NET 2.0 web part

    在"ASP.NET 2.0快速入门(8):ASP.NET 2.0 Web Part"中,我们将深入探讨Web Part这一强大的功能,它允许用户自定义和个性化他们的Web体验。 Web Part是ASP.NET 2.0引入的一个核心概念,它是构建可交互、可配置和可...

    ASP.NET 2.0 揭密

    在《ASP.NET 2.0揭密》这本书中,读者可以深入理解这个版本的ASP.NET的各种特性和应用。 一、ASP.NET 2.0的核心概念 1. 页面生命周期:ASP.NET 2.0页面经历了多个阶段,包括初始化、加载、验证、呈现和卸载等,...

    ASP.NET 2.0+SQL Server 2005全程指南.rar

    《ASP.NET 2.0+SQL Server 2005全程指南》是针对Web应用程序开发的一本详尽教程,结合了微软的两大核心技术——ASP.NET 2.0和SQL Server 2005,旨在帮助开发者构建高效、安全且可扩展的Web应用。下面将深入探讨这两...

Global site tag (gtag.js) - Google Analytics