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.pswp.cn/news/273789.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273789.shtml
英文地址,請注明出處:http://en.pswp.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 的…