向日葵视频在线下载_向日葵视频网站_向日葵小视频APP污_向日葵视频污污下载

您好,歡迎來到包裝印刷網(wǎng)!

當(dāng)前位置: 首頁 > 新聞資訊  > 技術(shù)文章 > 印刷設(shè)計(jì)

用戶控件包裝器的設(shè)計(jì)與實(shí)現(xiàn)

2007/8/10 15:04:24 人評(píng)論

    1.引言    SPS2003是一個(gè)安全、可伸縮的企業(yè)級(jí)門戶服務(wù)器。可以利用它將SharePoint 站點(diǎn)、信息和應(yīng)用程序匯集到一個(gè)單一的門戶位置,用戶可以通過門戶內(nèi)容和布局進(jìn)行個(gè)性化的定制,更快地找到相關(guān)信息。目前,許多企業(yè)和政府部門已開始基于SPS2003服務(wù)在互聯(lián)網(wǎng)上提供信息共享與應(yīng)用服務(wù),并構(gòu)建跨企業(yè)的虛擬組織或虛擬企業(yè),以實(shí)現(xiàn)大規(guī)模的資源共享。Web Part的自定義開發(fā)是實(shí)現(xiàn)基于SPS2003上的復(fù)雜應(yīng)用的關(guān)鍵,微軟官方提供的Web Partforvs2003模版是開發(fā)Web Part的標(biāo)準(zhǔn)編程環(huán)境,但是非??上?,它不提供Web Part開發(fā)的可視化界面,對(duì)于復(fù)雜界面的Web Part的開發(fā),將是一件非常吃力的事情。用戶控件包裝器巧妙的利用Web Partforvs2003模版,通過Web Part的屬性將用戶控件載入頁面,通過菜單編輯用戶控件,通過Web Part的數(shù)據(jù)傳遞實(shí)現(xiàn)用戶控件之間的數(shù)據(jù)傳遞。    2. 用戶控件與Web Part的聯(lián)系    ASP.NET為擴(kuò)展服務(wù)器控件框架提供了兩個(gè)抽象:用戶控件和自定義控件。    用戶控件實(shí)質(zhì)上是可插入其他頁面中的 ASP.NET 頁面,它們?cè)谝欢ǔ潭壬项愃朴趥鹘y(tǒng) ASP 中使用的 Include 文件。使用 Visual Studio .NET,可以使用將控件拖到頁面設(shè)計(jì)器的方式,將服務(wù)器控件拖到用戶控件設(shè)計(jì)器上,從而輕松地構(gòu)建用戶控件。    ASP.NET自定義控件實(shí)質(zhì)是一個(gè)從System.Web.UI.Control直接或間接繼承于的類,它不受Visual Studio .NET中圖形工具的支持??梢酝ㄟ^覆蓋System.Web.UI.Control的CreateChildControls 方法,往自定義控件中添加服務(wù)器控件,定義其屬性和事件。然后覆蓋Control類的Render方法(直接繼承于Control類)或覆蓋WebControl類的RenderContent方法(繼承于WebControl類),編寫自己的代碼來發(fā)出 html.    Web Part是SPS2003網(wǎng)站上的基本單元,它的概念類似于ASP.NET自定義控件,自己開發(fā)的Web Part將從Microsoft.SharePoint.Web PartPages.WebPart類繼承,也是間接的繼承了System.Web.UI.Control類。一樣可以通過覆蓋System.Web.UI.Control的CreateChildControls方法,添加服務(wù)器控件,定義其屬性和事件。然后覆蓋WebPart類的RenderWebPart方法,編寫自己的代碼發(fā)出html.    Web Part可以通過添加子控件的方式將用戶控件和自身相聯(lián)系,需要定義的大量用戶界面和業(yè)務(wù)事件在用戶控件中完成,Web Part起著選擇用戶控件、編輯用戶控件和傳遞用戶控件數(shù)據(jù)的作用。    3. 用戶控件包裝器的具體實(shí)現(xiàn)    3.1用戶控件的載入和屬性編輯    用戶控件的載入和屬性編輯都借助了Web Part的屬性和工具面板。Web Part的屬性分為默認(rèn)屬性和自定義屬性。默認(rèn)屬性對(duì)Web Part的外觀(如標(biāo)題,高度,寬度),布局(如所在Web Part區(qū)域,顯示的次序)和更高級(jí)的控制(如是否允許關(guān)閉,是否允許區(qū)域更改及選擇訪問Web Part的群體)進(jìn)行了設(shè)置,是Web Part自帶的屬性。自定義屬性是用戶自已定義的屬性,便于更靈活的編輯Web Part.    工具面板由不同的Tool Part組成。    默認(rèn)屬性對(duì)應(yīng)WebPartToolPart類,自定義屬性對(duì)應(yīng)CustomPropertyToolPart類,這兩個(gè)類都繼承于ToolPart類。WebPart類的GetToolParts方法決定將哪些Tool Part顯示在工具面板里。Web Part框架默認(rèn)在該方法中將這兩個(gè)類的實(shí)例寫入ToolPart數(shù)組中,這兩個(gè)屬性將被工具面板中對(duì)應(yīng)的Tool Part所編輯。同理,創(chuàng)建繼承于ToolPart的類,就可以在工具面板中很好的控制Web Part中除了屬性的內(nèi)容。    3.1.1 用戶控件的載入    用戶控件的載入通過Web Part的自定義屬性和工具面板實(shí)現(xiàn)。主要步驟如下:    (1) 將用戶控件對(duì)應(yīng)的dll文件放入SPS2003的bin目錄下,以待執(zhí)行;    (2) 創(chuàng)建WebPart的子類;    (3) 在子類中添加一個(gè)自定義屬性,用于保存載入的用戶控件的完整路徑。    (4) 創(chuàng)建ToolPart的子類;    (5) 將ascx文件放在SPS2003的某個(gè)虛擬目錄下,在ToolPart子類中實(shí)現(xiàn)從該虛擬目錄獲取所有用戶控件信息的方法;    (6) 在ToolPart子類中實(shí)現(xiàn)一個(gè)返回一個(gè)字符串的方法,該字符串用于創(chuàng)建一個(gè)項(xiàng)值為用戶控件完整路徑,項(xiàng)的文本為用戶控件名稱或描述的下拉列表框;    (7) ToolPart的子類覆蓋虛方法RenderToolPart(HtmlTextWriter),將第7步得到的字符串傳入并被HtmlTextWriter對(duì)象寫到瀏覽器上,用于在工具面板中顯示包含所有用戶控件的下拉列表框;    (8) ToolPart的子類覆蓋虛方法ApplyChanges(該虛方法用于用戶點(diǎn)擊工具面板中的“確定”或“應(yīng)用”按鈕時(shí)發(fā)生,將相應(yīng)Tool Part中的值作編輯)將通過表單形式提交到服務(wù)器端的下拉列表框的選中值傳給相應(yīng)Web Part的保存用戶控件路徑的自定義屬性,通過該屬性載入用戶控件;    (9) WebPart的子類覆蓋虛方法GetToolParts,在該方法中返回的ToolPart數(shù)組中加入第4步創(chuàng)建的類的實(shí)例;    (10) WebPart的子類覆蓋虛方法CreateChildControls,將載入的用戶控件作為Web Part的子控件加入;    (11) WebPart的子類覆蓋虛方法RenderWebPart,通過RenderControl方法將該用戶控件呈現(xiàn)到瀏覽器上。    當(dāng)載入用戶控件后,可以將用戶控件屬性映射到工具面板的一個(gè)Tool Part上,通過Tool Part來編輯用戶控件屬性。主要步驟如下:    (1)創(chuàng)建ToolPart的另一個(gè)子類,添加一個(gè)自定義屬性,將載入的用戶控件傳給它;    (2) WebPart的子類覆蓋WebPart的虛方法GetToolParts,在該方法中返回的ToolPart數(shù)組中加入第1步創(chuàng)建的類的實(shí)例;    (3) 創(chuàng)建一個(gè)編輯不同類型屬性的基類,將載入的用戶控件及及時(shí)的http請(qǐng)求和要求編輯的屬性傳給它。在該類的子類中具體實(shí)現(xiàn)不同類型屬性的編輯?;愔袆?chuàng)建一個(gè)返回一個(gè)字符串的抽象方法,該字符串是編輯屬性的html控件的html標(biāo)記的字符串形式,在子類中對(duì)該方法進(jìn)行具體實(shí)現(xiàn);    (4) 創(chuàng)建一個(gè)編輯用戶控件所有屬性的類,該類利用第3步創(chuàng)建的類,逐一將編輯用戶控件屬性的html控件封裝進(jìn)一個(gè)HtmlTable中;    (5) 第1步創(chuàng)建的類覆蓋ToolPart的虛方法RenderToolPart,利用第4步創(chuàng)建的類將對(duì)應(yīng)用戶控件屬性信息的一個(gè)HtmlTable呈現(xiàn)到工具面板當(dāng)中;    以上步驟將用戶控件的屬性映射到工具面板的一個(gè)Tool Part當(dāng)中,以下步驟將實(shí)現(xiàn)通過Tool Part編輯用戶控件的屬性。    (6) 在WebPart的子類中添加一個(gè)自定義屬性保存用戶控件的所有屬性值;    (7) 在WebPart的子類中實(shí)現(xiàn)一個(gè)由外部傳入的屬性新值更新保存屬性值的自定義屬性的方法;    (8) 在WebPart的子類中實(shí)現(xiàn)一個(gè)利用上述自定義屬性更新用戶控件屬性的方法;    (9) 在編輯不同類型屬性的基類中創(chuàng)建一個(gè)返回Object類型的抽象函數(shù),該返回值代表以表單形式提交到服務(wù)器端的編輯屬性的html控件的值,該抽象函數(shù)在子類中得到具體的實(shí)現(xiàn);    (10) 第1步創(chuàng)建的類覆蓋ToolPart的虛方法ApplyChanges,利用第9步創(chuàng)建的函數(shù)得到提交到服務(wù)器端的html控件值,將該值傳給WebPart的子類更新保存屬性值的自定義屬性,然后利用該自定義屬性更新用戶控件的屬性值。  3.2 用戶控件的編輯    菜單是Web Part的一個(gè)重要組成部分,菜單的充分利用可以對(duì)Web Part的內(nèi)容進(jìn)行方便的編輯。Web Part自帶的菜單可以實(shí)現(xiàn)對(duì)Web Part進(jìn)行有效的編輯。這里介紹利用菜單實(shí)現(xiàn)對(duì)用戶控件的復(fù)制和粘貼。    確定一個(gè)用戶控件的完整信息需要得到用戶控件的路徑及用戶控件的所有屬性??梢钥紤]將這兩者復(fù)制到一個(gè)“剪切板”上。類的靜態(tài)成員在該類的所有實(shí)例里擁有一樣的值,巧妙地起到“剪切板”的作用,基于這個(gè)思想,在WebPart的子類中添加兩個(gè)靜態(tài)域,用于保存用戶控件的信息。    復(fù)制過程:    (1) 添加復(fù)制菜單及相應(yīng)菜單的服務(wù)器端函數(shù);    (2) 在函數(shù)中將WebPart子類中的自定義屬性的值賦予添加的兩個(gè)靜態(tài)域;    粘貼過程:    (1) 添加粘貼菜單及相應(yīng)菜單的服務(wù)器端函數(shù);    (2) 在函數(shù)中將兩個(gè)靜態(tài)域的值賦予WebPart子類的自定義屬性;    (3) 根據(jù)保存用戶控件路徑的自定義屬性添加用戶控件;    (4) 根據(jù)保存用戶控件屬性的自定義屬性賦予用戶控件新的屬性值。    (5) 保存自定義屬性的值,以便再次加載頁面時(shí)用戶控件的狀態(tài)得以保留;    3.3 用戶控件之間的數(shù)值傳遞    3.3.1 Web Part之間的數(shù)值傳遞    用戶控件之間的數(shù)值傳遞依賴于Web Part之間的數(shù)值傳遞。Web Part之間的數(shù)值通過實(shí)現(xiàn)Web Part框架提供的6對(duì)接口之一得以傳遞,這6對(duì)接口分別是:    連接的接口對(duì)    描述    ICellProvider, ICellConsumer    由實(shí)現(xiàn)ICellProvider的對(duì)象提供一個(gè)Object類型的單一值給實(shí)現(xiàn)ICellConsumer的對(duì)象,實(shí)現(xiàn)ICellConsumer的對(duì)象在接收值之前可以向?qū)崿F(xiàn)ICellProvider的對(duì)象提供String類型的初始信息,實(shí)現(xiàn)ICellProvider的對(duì)象也可以在發(fā)送值之前向?qū)崿F(xiàn)ICellConsumer的對(duì)象提供String類型的初始信息    IRowProvider, IRowConsumer    由實(shí)現(xiàn)IRowProvider的對(duì)象提供一個(gè)DataRow類型的數(shù)組給IRowConsumer,實(shí)現(xiàn)IRowProvider的對(duì)象在傳遞值之前可以向?qū)崿F(xiàn)IRowConsumer的對(duì)象提供String類型的初始信息    IListProvider, IListConsumer    由實(shí)現(xiàn)IListProvider的對(duì)象提供一個(gè)DataTable類型的數(shù)給IListConsumer的對(duì)象,實(shí)現(xiàn)IRowProvider的對(duì)象在傳遞值之前可以向?qū)崿F(xiàn)IRowConsumer的對(duì)象提供String類型的初始信息。    IFilterProvider, IFilterConsumer    提供或者消費(fèi)一個(gè)String類型的過濾值的接口對(duì)。 例如,SharePoint列表實(shí)現(xiàn)了IRowProvider, IListProvider ,IFilterConsumer. 那么兩個(gè)不同的列表能夠互相連接,并且一個(gè)列表可以過濾另一個(gè)列表的內(nèi)容。    IParametersInProvider, IParametersInConsumer    實(shí)現(xiàn)IParametersInProvider接口的對(duì)象可以向IParametersInConsumer的對(duì)象提供任意組的參數(shù)值,值的內(nèi)容由String類型組成。實(shí)現(xiàn)IParametersInConsumer的對(duì)象在接受參數(shù)之前可以向?qū)崿F(xiàn)IParametersInProvider的對(duì)象提供所需參數(shù)的初始信息    IParametersOutProvider, IParametersOutConsumer    實(shí)現(xiàn)IParametersOutProvider接口的對(duì)象可以向IParametersOutConsumer的對(duì)象提供任意組的參數(shù)值,值得內(nèi)容由string類型組成。實(shí)現(xiàn)IParametersOutProvider的對(duì)象在發(fā)送參數(shù)之前可以向?qū)崿F(xiàn)IParametersOutConsumer的對(duì)象提供所需參數(shù)的初始信息    Web Part連接的設(shè)計(jì)和SharePoint的對(duì)象模型有緊密的聯(lián)系。但是,從本質(zhì)上說,提供的數(shù)據(jù)類型分為Object和String兩大類(DataRow和DataTable實(shí)際上也就是Object類型的數(shù)組組成);提供的相關(guān)信息都是String類型,方向要么由數(shù)據(jù)者提供向數(shù)據(jù)者接收提前發(fā)送,要么由數(shù)據(jù)者接收向數(shù)據(jù)者提供者提前發(fā)送。用戶控件對(duì)數(shù)據(jù)交流的最大要求是既可以傳遞數(shù)據(jù),又可以接收數(shù)據(jù),并且可以是任意類型的數(shù)據(jù)類型。一個(gè)Web Part可以實(shí)現(xiàn)多個(gè)接口以實(shí)現(xiàn)既傳遞數(shù)據(jù)又接受數(shù)據(jù)的功能,但是兩個(gè)Web Part之間不能既提供數(shù)據(jù)給對(duì)方,又從對(duì)方接受數(shù)據(jù),這樣將形成閉環(huán)??梢钥紤]的方案是傳遞數(shù)據(jù)而接收數(shù)據(jù)的初始化信息。綜上因素,ICellProvider和ICellConsumer是不錯(cuò)的選擇,因?yàn)閭鬟f的數(shù)據(jù)是Object類型,而接收方可以提前傳遞初始化信息給發(fā)送方。主要實(shí)現(xiàn)步驟如下:    (1) 創(chuàng)建供用戶控件待以實(shí)現(xiàn)的數(shù)據(jù)提供接口和數(shù)據(jù)接收接口;    (2) 創(chuàng)建兩個(gè)類,分別用于實(shí)現(xiàn)ICellProvder和ICellConsumer接口;    (3) 在WebPart的子類中,添加第2步創(chuàng)建的類的對(duì)象作為域成員;    (4) 在WebPart的子類中,覆蓋虛方法EnsureInterfaces,根據(jù)包裝的用戶控件實(shí)現(xiàn)的接口類型,注冊(cè)ICellProvider接口或ICellConsumer接口;    (5) 在WebPart的子類中,覆蓋虛方法CanRunAt,指明連接的位置在服務(wù)器端還是客戶端;    (6) 在WebPart的子類中,覆蓋虛方法PartCommunicationConnect,該方法被Web Part框架用來通知Web Part已被連接;    (7) 在WebPart的子類中,覆蓋虛方法PartCommunicationInit,該方法被Web Part框架用來傳送初始化信息,注冊(cè)了ICellConsumer的Web Part可以從用戶控件得到要傳送的初始化信息在實(shí)現(xiàn)ICellConsumer的域成員中進(jìn)行傳送,注冊(cè)了ICellProvider的Web Part也可以從用戶控件得到要傳送的初始化信息在實(shí)現(xiàn)ICellProvider的域成員中進(jìn)行傳送;    (8) 在WebPart的子類中,覆蓋虛方法PartCommunicationMain,注冊(cè)了ICellProvider的Web Part可以將實(shí)現(xiàn)ICellProvider的域成員在此方法中得到的傳遞過來的初始化信息轉(zhuǎn)發(fā)給用戶控件;注冊(cè)了ICellConsumer的Web Part也可以將實(shí)現(xiàn)ICellConsumer的域成員在此方法中得到的傳遞過來的初始化信息轉(zhuǎn)發(fā)給用戶控件;同時(shí),注冊(cè)了ICellProvider接口的Web Part可以在此時(shí)接收用戶控件傳來的數(shù)據(jù),利用實(shí)現(xiàn)ICellProvider的域成員發(fā)送數(shù)據(jù)給注冊(cè)ICellConsumer接口的Web Part;    (9) 在WebPart的子類中,覆蓋虛方法RenderWebPart,注冊(cè)了ICellConsumer接口的Web Part的實(shí)現(xiàn)ICellConsumer的域成員在此方法中得到注冊(cè)了ICellProvider的Web Part傳來的數(shù)據(jù),注冊(cè)了ICellConsumer接口的Web Part可以將數(shù)據(jù)傳遞給包裝的用戶控件,將用戶控件呈現(xiàn)在瀏覽器上;    這些虛方法都是Web Part框架依次調(diào)用,次序和步驟順序一致。    4.結(jié)束語    用戶控件包裝器是巧妙的利用Web Part本身的功能將Web Part的缺陷加以克服。它的實(shí)現(xiàn)給Web Part的開發(fā)帶來極大的便利,ASP.NET程序員根本就不需要理解Web Part的開發(fā)原理,就可以利用以往的編程思想快速地開發(fā)自己需要的Web Part,進(jìn)而使得SPS2003的門戶網(wǎng)站開發(fā)和設(shè)計(jì)事半功倍。  轉(zhuǎn)載自:工控網(wǎng)

相關(guān)資訊

  • 印刷廠拼版印刷對(duì)印版方向有哪些要求

    拼版是指將要印刷的頁面按其折頁方式按頁碼順序排列在一起,其大小由印刷幅面及印刷紙張的大小來定。拼版可分為:零件的拼版和書刊的拼版兩種。那印刷廠拼版印刷對(duì)印版方向有哪些要求呢?   一、拼版印刷的方向要求 不論是用單版還是用多版印刷,首先應(yīng)明確拼色圖案…

    2025/4/27 7:28:19
  • 提升印刷效率與品質(zhì),先從自動(dòng)掛版開始

    要實(shí)現(xiàn)快速換單,先從自動(dòng)掛版開始  掛版是印刷換單過程中必不可少的環(huán)節(jié)。有些人認(rèn)為掛版是一件簡(jiǎn)單的事,殊不知就這么一件“小事”,如果不注意細(xì)節(jié)也是會(huì)對(duì)印刷效率和品質(zhì)造成很大影響的。如今,部分大型紙箱廠已開始使用智能化自動(dòng)掛版設(shè)備以提升印刷效率和品質(zhì)。 …

    2025/4/26 8:02:30
  • 印刷設(shè)計(jì)印版必懂知識(shí)——翻版與拼版

    本文主要為大家講解印刷翻版和印刷拼版相關(guān)知識(shí)點(diǎn)希望大家能有所收獲?! ∫?、印刷翻版類型  大多設(shè)計(jì)作品都需雙面印刷。一張紙印完一面還得印另一面,就需要翻面,在印刷上就要做翻版。印刷中根據(jù)印版內(nèi)容和翻版方向,將翻版分為3種。  1、正反版印刷  正反版印刷…

    2025/3/30 10:15:47
  • 企業(yè)負(fù)責(zé)人為消防代言,產(chǎn)品包裝裹“新衣”

    食品外包裝印有消防宣傳標(biāo)語,負(fù)責(zé)人成為消防公益代言人。近日,在婁底新化縣,這一創(chuàng)新舉措引發(fā)市民點(diǎn)贊。新化縣消防大隊(duì)負(fù)責(zé)人表示:“今年4月份以來,新化縣開展了‘全民消防我行動(dòng)’大型公益活動(dòng),湖南前進(jìn)食品股份有限公司董事長(zhǎng)羅教孟成為消防公益代言人,首批具有消防宣…

    2018/7/10 12:21:45

共有 網(wǎng)友評(píng)論