SharePoint 自定义WebPart之间的连接

  1、创建SharePoint解决方案,添加两个WebPart分别用来发送和接收;

clip_image001

  2、发送值的WebPart需要继承自IWebPartField(当然,根据需要还可以选择IWebPartField,IWebPartParameters,IWebPartRow,IWebPartTable,具体参见msdn),原理是将需要发送的值,放到一个接口实例里;

  public class SendWebPart : WebPart, IWebPartField

  详细代码:

 1 private TextBox tb;
 2 private Button btn;
 3 
 4 protected override void CreateChildControls()
 5 {
 6     tb = new TextBox();
 7     Controls.Add(tb);
 8     btn = new Button();
 9     btn.Text = "Send";
10     Controls.Add(btn);
11 }
12 //创建一个接口实例
13 [ConnectionProvider("Send", AllowsMultipleConnections = true)]
14 public IWebPartField SendObject()
15 {
16     EnsureChildControls();
17     return this;
18 }
19 
20 //将数据callback到接口实例
21 public void GetFieldValue(FieldCallback callback)
22 {
23     EnsureChildControls();
24     callback(tb.Text);
25 }
26 // Schema 属性返回 PropertyDescriptor 对象所封装的数据字段的架构信息
27 public System.ComponentModel.PropertyDescriptor Schema
28 {
29     get { return null; }
30 }

  3、接受数据的WebPart,原理就是在render之前去共享的接口实例中获取值,然后使用;

 1 private Label lbl;
 2 private IWebPartField provider;
 3 
 4 protected override void CreateChildControls()
 5 {
 6     lbl = new Label();
 7     Controls.Add(lbl);
 8 }
 9 //检索接口实例
10 [ConnectionConsumer("GetObject")]
11 public void RecvObject(IWebPartField prov)
12 {
13     provider = prov;
14 }
15 //获取接口实例中的数据
16 private void GetData(object fieldValue)
17 {
18     lbl.Text = Convert.ToString(fieldValue);
19 }
20 //在Render前去接口实例获取值
21 protected override void OnPreRender(EventArgs e)
22 {
23     if (provider != null)
24         provider.GetFieldValue(new FieldCallback(GetData));
25     base.OnPreRender(e);
26 }

  4、部署WebPart,然后连接,如下图:

clip_image002

  5、查看效果

  点击Send前,只能看到页面上的两个webpart,如下图:

clip_image003

  在TextBox中输入值,点击Send,刷新页面,TextBox中的值已经从SendWebPart中发送到ReceiveWebPart中了,两个自定义WebPart连接成功!

clip_image004

  在完成了两个自定义WebPart连接以后,自己还想过连接SharePoint自带的WebPart,但是由于时间关系,还没有发现如何连接,有成功的希望可以给我留言~~~谢谢~~

  此接口旨在用于 Web 部件连接。在 Web 部件连接中,位于 WebPartZoneBase 区域中的两个服务器控件建立一个连接并共享数据,其中一个控件充当使用者,另一个控件充当提供者。Web 部件连接中共享数据的机制是接口实例,提供者通过使用回调方法将其提供给使用者。若要建立连接,使用者和提供者必须同时使用同一接口类型共享数据。如果使用者无法识别由提供者发送的接口类型,还可以通过使用转换器(WebPartTransformer 对象)连接控件,转换器可将提供者发送的接口实例转换为使用者可以识别的类型。有关连接的详细信息,请参见 WebPartConnection 和 Web 部件连接概述。

  IWebPartField 接口是 Web 部件控件集中所包含的一个提供者接口,用作基于数据字段创建连接的标准接口。您也可以创建自定义接口以用于 Web 部件连接,但在由数据驱动的许多 Web 应用程序中,使用 IWebPartField 接口基于数据源中的公共行(有关详细信息,请参见 IWebPartRow 接口)、表(有关详细信息,请参见 IWebPartTable 接口)或字段创建连接是很有用的。在典型连接中,充当提供者的 WebPart 控件将实现 IWebPartField 接口并用特殊的回调方法将该接口的实例提供给使用者。例如,提供者可以为用户信息表中包含 Web 用户邮政编码数据的字段实现 IWebPartField 接口。另一个充当使用者的 WebPart 控件则定义一个特殊的方法来接收该接口实例,然后可以提取邮政编码数据,根据该邮政编码查询并显示天气信息。

  IWebPartField 接口有两个公开的成员。Schema 属性返回 PropertyDescriptor 对象所封装的数据字段的架构信息。GetFieldValue 方法声明一个方法,在调用回调方法时,实施者(如提供者控件)使用该方法检索接口实例的字段数据。

参考链接

  http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.webparts.iwebpartfield(v=VS.80).aspx

转载于:https://www.cnblogs.com/jianyus/p/3657400.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/273789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[python 进阶] 9. 符合Python风格的对象

文章目录9.1 对象表示形式9.2 再谈向量类9.3 备选构造方法9.4 classmethod与staticmethod9.5 格式化显示9.6 可散列的Vector2d什么是可散列的数据类型9.6 可散列的Vector9.7 Python的私有属性和“受保护的”属性9.8 使用 __slots__ 类属性节省空间本章包含以下话题:…

android软件获取系统签名

有时候有的功能必须要有系统签名才能使用,例如调用系统自带的Surface.screenShot方法时,就必须在androidManifest.xml里声明android:sharedUserId"android.uid.system" 但是这个时候在编译生成的apk很有可能无法安装的情况 并且报这个错误&…

Python3中的可变与不可变类型

在描述变量是否是可变类型时,可变与否实际上说的是对变量进行“修改”时变量的内存地址是否会发生变化,而非值是否可变。在Python中,对不可变的变量进行“修改”实际上是重新赋值,对可变的变量进行修改才是真正的修改,…

python中带*(单星号)的变量和**(双星号)的变量

一、*args的使用方法 *args 用来将参数打包成tuple给函数体调用二、**kwargs的使用方法 **kwargs 打包关键字参数成dict给函数体调用注意点:参数arg、*args、**kwargs三个参数的位置必须是一定的。必须是(arg,*args,**kwargs)这个顺序,否则程序会报错。单…

百度知道回答的依赖注入

oC 或者 DI 或者 ...一大堆的缩写词不管是面向对象,还是面向过程,都需要分成许多的块,然后由这些部件协同工作完成任务 要协同工作就会产生依赖,一个方法调用另一个方法,一个对象包含另一个对象 如果对象A包含对象B的话…

Django model中的 class Meta 详解

参考 (1) https://www.cnblogs.com/tongchengbin/p/7670927.html

C\C++ 获取当前路径

C\C 获取当前路径 获取当前工作目录是使用函数:getcwd。cwd指的是“current working directory”,这样就好记忆了。 函数说明: 函数原型:char* getcwd(char* buffer, int len); 参数:buffer是指将当前工作…

[python进阶]11接口:从协议到抽象基类

本章讨论的话题是接口:从鸭子类型的代表特征动态协议,到使接口更明确、能验证实现是否符合规定的抽象基类(Abstract Base Class,ABC)。 首先,本章说明抽象基类的常见用途:实现接口时作为**超类(…

ie11浏览器不能显示最新修改的程序,调试出现代码逻辑错误却依旧执行

1、问题:ie11浏览器不能显示最新修改的程序,调试也不能,出现代码逻辑错误却依旧执行 2、百度解决方案:http://blog.163.com/wang_hj138126/blog/static/1408001062012631508444/ FireFox每次访问页面时检查最新版本 2012-07-31 …

C# 基础备忘录

1. decimal 类型调用ToString()方法后没把末尾的0去掉的解决办法: 例子:decimal? money Convert.ToDecimal(10.8950);string moneyStrmoney.Value.ToString(); 结果在同一台机子,两个项目里面会出现两个不同的结果。结果一:moneyStr"1…

[python进阶]12.继承的优缺点

本章探讨继承和子类化,重点是说明对 Python 而言尤为重要的两个细节: 子类化内置类型的缺点多重继承和方法解析顺序 12.1 子类化内置类型很 12.2 多重继承和方法解析

Android中用GridView实现九宫格的两种方法(转)

Android中用GridView实现九宫格的两种方法http://blog.csdn.net/shakespeare001/article/details/7768455 1.传统办法:实现一个继承BaseAdapter的 ImageAdapter package com.test; import android.app.Activity; import android.content.Context; import andro…

django框架中的模型

文章目录关联关系Many-to-one relationshipsMany-to-many relationshipsdjango学习——model中的get和filter方法的区别模型模型是您的数据唯一而且准确的信息来源。它包含您正在储存的数据的重要字段和行为。一般来说,每一个模型都映射一个数据库表。基础&#xff…

虚拟主机TOMCAT配置

在tomcat中添加虚拟主机&#xff1a;   编辑"tomcat\conf\server.xml"&#xff0c;在"<Engine></Engine>"元素中新加子元素"<Host></Host>"&#xff0c;如下&#xff1a;  </Host>     <Host name&quo…

django框架中表单

参考官方文档,太详细了 (https://docs.djangoproject.com/zh-hans/2.1/topics/forms/)

鸟哥学习笔记六(基础篇第十一章)

type:查看指令是否是bash内建指令 变量的设定规则 1. 变量与变量内容以一个等号『』来连结&#xff0c;如下所示&#xff1a; 『mynameVBird』 2. 等号两边不能直接接空格符&#xff0c;如下所示为错误&#xff1a; 『myname VBird』或『mynameVBird Tsai』3. 变量名称只能…

django-models类索引外键时候的related_name属性作用

其实可以就理解为,一对多关系拿对象的解决 可以把引用理解为主从关系 主引用从,即一对多 , 注意外键字段是放在多的一端的,比如一个班级class 有很多同学 students,那么就在students类里面设置class字段值是外键类型 从students拿class数据很好拿, studet.class就拿到了 但是从…

查找算法分析

参考&#xff1a; https://www.cnblogs.com/maybe2030/p/4715035.html#_label0

PPT设计里的小技巧

首先想说的是PPT设计&#xff0c;现在还是有很多人只把PPT当成一个存放文字和图片的软件&#xff0c;说的更直接点就是当是一个可以全屏放映内容的软件。但是我想说的是PPT已经走向了设计类型的软件&#xff0c;当Microsoft office Powerpoint2010正式版出来的时候这种感觉更盛…

PDFlib免费下载地址及详细介绍手册

PDFlib是一个用于创建PDF文档的开发工具,也可直接在你的服务器端产生PDF输出, 可利用PDFLib提供的简单易用的API&#xff08;应用编程接口&#xff09;在服务器或客户端产生PDF文档, PDFlib在生成PDF文档时不需要第3方软件的支持,也不需要其它工具。此产品属于产品 PDFlibPDI 的…