《WalkThroughSharePointWebPart入门指南五.ppt》由会员分享,可在线阅读,更多相关《WalkThroughSharePointWebPart入门指南五.ppt(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、WalkThroughSharePoint WebPart 入门指南 五Kaneboy MS MVP转载声明:此WalkThrough系列被转载和引用时,请保持博客堂链接。Thanks.此WalkThrough将演示在两个WebPart之间交换数据(Connectable WebPart)背景知识了解WebPart编程的一般知识,请阅读此WalkThrough系列的前4辑。此WalkThrough中将不对某些具体细节(部署等)做详细描述。一、了解Connectable WebPartProvider WebPartConsumer WebPartICellProviderIRowProvide
2、rIListProviderIFilterProviderIParametersInProviderIParametersOutProviderICellConsumer IRowConsumer IListConsumer IFilterConsumerIParametersInConsumerIParametersOutConsumer这个WebPart做为数据提供者这个WebPart做为数据使用者提供者可以向使用者提供:一项数据(Cell)一行数据(Row)一个表的数据(List)查询过滤器(Filter)参数(Parameters)Provider WebPart至少需要实现一个Pro
3、vider接口 Consumer WebPart至少需要实现一个Consumer接口 Provider接口和Consumer接口(通过Transformer)不一定要一一对应 位于不同页面的符合要求的WebPart也可以连接起来二、创建Provider WebPart(一)在VS.NET中建立一个类型为“Web Part Library”,名称为“SampleWebPart”的项目。将VS.NET自动创建的WebPart1(WebPart1.cs、WebPart1.dwp)删除。如左图,新建一个“Provider Web Part”,名称为“CityProvider”三、创建Provider
4、WebPart(二)如下图所示,VS.NET自动生成的CityProvider不但从Microsoft.SharePoint.WebPartPages.WebPart继承,还实现了ICellProvider接口。实现了ICellPrivider的WebPart可以提供给别的WebPart一项数据。在自动生成的“EnsureInterfaces()”方法中,可以看到有一条调用“RegisterInterface()”方法(包含8个参数)的语句,将其更改为:RegisterInterface(CellProvider_WPQ_,ICellProvider,WebPart.UnlimitedConn
5、ections,ConnectionRunAt.Server,this,CellProviderInterface_WPQ_,“提供一个城市名称给:提供一个城市名称给:,“提供一项包含了城市名称的数据提供一项包含了城市名称的数据);四、创建Provider WebPart(三)在CityProvider中定义一个下拉框控件:private DropDownList cityList=new DropDownList();重写基类的“OnLoad()”方法,给下拉框绑定一些数据:protected override void OnLoad(EventArgs e)if(cityList.Item
6、s.Count=0)cityList.DataSource=new String“北京北京”,“上海上海”,“深圳深圳;cityList.DataBind();this.Controls.Add(cityList);cityList.AutoPostBack=true;在已有的“RenderWebPart()”方法中,输出这个下拉框控件的内容:protected override void RenderWebPart(HtmlTextWriter output)cityList.RenderControl(output);五、创建Provider WebPart(四)在已有的“PartComm
7、unicationMain()”方法中添加下面的代码,将开始添加的下拉框控件中选中的项的数据传递出去。public override void PartCommunicationMain()if(CellReady!=null)/创建要传递出去的数据创建要传递出去的数据 CellReadyEventArgs cellReadyArgs=new CellReadyEventArgs();cellReadyArgs.Cell=cityList.SelectedItem.Text;/通过通过CellReady这个事件,将数据传递给使用者这个事件,将数据传递给使用者 CellReady(this,ce
8、llReadyArgs);六、创建Consumer WebPart(一)如左图,新建一个“Consumer Web Part”,名称为“CityConsumer”七、创建Consumer WebPart(二)如下图所示,VS.NET自动生成的CityConsumer不但从Microsoft.SharePoint.WebPartPages.WebPart继承,还实现了ICellConsumer接口。实现了ICellConsumer的WebPart可以从别的WebPart接收一项数据。在自动生成的“EnsureInterfaces()”方法中,可以看到有一条调用“RegisterInterface
9、()”方法(包含8个参数)的语句,将其更改为:RegisterInterface(CellConsumer_WPQ_,ICellConsumer,WebPart.LimitOneConnection,ConnectionRunAt.Server,this,CellConsumer_WPQ_,从从.处接收一个城市名称处接收一个城市名称,获取一项包含了城市名称的数据获取一项包含了城市名称的数据);八、创建Consumer WebPart(三)在已有的“CellReader()”方法中,接收Provider WebPart传送过来的数据,并赋值给自动生成的Text属性:public void Cel
10、lReady(object sender,CellReadyEventArgs cellReadyArgs)if(cellReadyArgs.Cell!=null)Text=你选择的是:你选择的是:+cellReadyArgs.Cell.ToString();这个“CellReady()”方法会被SharePoint自动注册到(被连接起来的)Provider WebPart的CellReady事件,参看第五步骤。这样Provider WebPart就可以将数据通过CellReady事件传过来。在自动生成的这个CityConsumer中,VS.NET会自动添加一个Text属性,并把Text属性的
11、值在“RenderWebPart()”方法中输出。所以我们这个演示无需手写更多代码。九、为两个WebPart创建部署文件如右图,在项目中增加两个Dwp部署文件,分别命名为“CityProvider.dwp”和“CityConsumer.dwp”。下面分别是这两个Dwp文件的内容:CityProvider 一个提供城市名称的一个提供城市名称的WebPart SampleWebPart SampleWebPart.CityProvider CityConsumer 一个接收城市名称的一个接收城市名称的WebPart SampleWebPart SampleWebPart.CityConsumer十
12、、部署、连接两个WebPart将两个WebPart部署到一个页面上,如左图。由于我们尚未将它们连接起来,它们之间不会有任何数据的交互。点击页面右上角的“修改我的网页”,选择“设计此网页”,进入当前页面的编辑状态。如上图,点击CityProvider WebPart右上方的菜单按钮,选择“连接、提供一个城市名称给:、CityConsumer”,将这两个WebPart连接了起来。同样,也可以点击CityConsumer WebPart右上角的菜单按钮,选择“连接、从处接收一个城市名称、CityProvider”,来进行连接的操作。两者做其一即可。十一、连接WebPart的效果如左图,将两个WebPart连接起来以后,CityConsumer就可以接收到CityProvider选中的城市的名称,来动态的输出接收到的数据。从CityProvider的下拉框中选择“上海”这个选项。可以看到CityConsumer根据接收到的新的数据更改了输出内容。十二、To Be ContinuedKaneboy MS MVP