如何使用VS建立SharePoint自定義Ribbon選單(圖文和程式碼)
如何使用VS建立SharePoint自定義Ribbon選單
SharePoint Ribbon選單
SharePoint 2010為我們帶來了很多新功能,這些新功能使得SharePoint更像是一個Office客戶端應用程式,這無疑是令人振奮的。提到Office就不能不
提到Office 2007帶來的Ribbon,Ribbon的出現徹底改變了以往Office客戶端的操作方式,初用時或許會覺得不習慣,但時間長了就會發現確實是非常好
第一步:建立Feature
我們首先要做的就是定義一個Feature檔案,目前來看在2010中Feature的寫法與2007中還是一樣的。
導航到C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\FEATURES,先建立一個檔案
夾,名字可以叫“CustomRibbonButton”,隨後在其中新增一個Feature.xml檔案。
程式碼 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 <?xml version="1.0" encoding="utf-8" ?> <Feature Id="A8DA4BE9-8F82-4E94-9723-D51E8B5D683E" Title="CustomRibbonButton" Description="CustomRibbonButton" Version="1.0.0.0" Scope="Web" xmlns="http://schemas.microsoft.com/sharepoint/"> <ElementManifests> <ElementManifest Location="CustomRibbonButton.xml" /> </ElementManifests> </Feature>
第二步:建立支援檔案
與SharePoint 2007一樣,我們還需要建立一個Feature的支援檔案,這個檔案中包含了按鈕的現實方式,點選後的事件等等資訊。
下面有一些地方需要注意,首先在第6行裡需要指定我們這個按鈕將關聯的列表或項內容型別的識別符號,現在來看與2007時的還一樣。
另外一點就是第9行的“Sequence” 屬性,這個屬性指定了我們要新增的按鈕所在組中的位置。
接著往下看,第14行的“Location” 屬性,這裡指定了這個按鈕應該被新增到哪個Tab下的哪個組中。
程式碼 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <CustomAction Id="CustomRibbonButton" RegistrationId="101" RegistrationType="List" Location="CommandUI.Ribbon" Sequence="5" Title="Move Documents"> <CommandUIExtension> <CommandUIDefinitions> <CommandUIDefinition Location="Ribbon.Documents.Manage.Controls._children"> <Button Id="Ribbon.Documents.New.TestButton" Alt="Move Documents" Sequence="5" Command="Test_Button" Image32by32="/_layouts/images/CustomRibbon/network32.GIF" Image16by16="/_layouts/images/CustomRibbon/network16.GIF" LabelText="Move Documents" TemplateAlias="o1" /> </CommandUIDefinition> </CommandUIDefinitions> <CommandUIHandlers> <CommandUIHandler Command="Test_Button" CommandAction="javascript:alert('Welcome To SharePoint 2010 !');" /> </CommandUIHandlers> </CommandUIExtension> </CustomAction> </Elements>
其格式為:Ribbon.[Tab].[Group].Controls._children下面第19行,“Command” 屬性,這個屬性將“CommandUIDefinition” 與“CommandUIHandler” 關聯起來。
第23行“TemplateAlias” 屬性,定義了這個按鈕在頁面中是32X32還是16X16,“o1”是32,“o2”是16。
最後再來看下“CommandUIHandler” 部分,第29行的“Command” 屬性與第19行的“Command” 相對應,以將Button與其操作關聯起來。
最重要的是30行的“CommandAction” 標記,在這個標記中我們將定義按鈕被按下時將要執行的Javascript指令碼。SharePoint 2010為我
們提供了豐富的Javascript API,通過這些API我們可以做更多的事情。
第三步:部署在SharePoint 2010中我們可以通過PowerShell更方便的部署應用了,開啟SharePoint 2010管理控制檯,依次執行下面兩條命令
Install-SPFeature FeatureFolderName
Enable-SPFeature FeatureFolderName –Url http://server/site/subsite
圖文部分,下面用圖片說一下,以便不過腦子就能搞定。
SharePont 2010裡允許你自定Ribbon選單,下面開始介紹:
SharePoint 2010中的Ribbon可以進行定製開發,通過使用XML和JavaScript。其中,XML定義了Ribbon中的控制元件,JavaScript指令碼實現了Ribbon的功能,在SharePoint Foundation 2010中。Ribbon通過前臺指令碼來實現對應的功能,我們可以新增Ribbon、替換或刪除已有的Ribbon,我將使用Visual Studio 2010建立一個非常簡單的Ribbon,點選彈出“Hello Ribbon!”。
首先,在Visual Studio 2010中建立一個“空白SharePoint專案”,我把它命名成“TestRibbon”:
選擇部署為場解決方案
然後右擊專案名TestRibbon,選擇新增--新建項,新增一個Empty Element,這裡採用預設名字EmptyElement1
將新添的EmptyElement1中的Element.xml檔案更新為如下內容:
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<CustomAction Id="Ribbon.CustomGroup" RegistrationId="101" RegistrationType="List" Title="New Ribbon Button"
Location="CommandUI.Ribbon">
<CommandUIExtension>
<CommandUIDefinitions>
<CommandUIDefinition
Location="Ribbon.Documents.New.Controls._children">
<Button Id="Ribbon.Documents.New.MyButton"
Command="MyButtonCommand"
Image32by32="/_layouts/images/PPEOPLE.GIF"
LabelText="Hello Ribbon"
TemplateAlias="o2" />
</CommandUIDefinition>
</CommandUIDefinitions>
<CommandUIHandlers>
<CommandUIHandler
Command="MyButtonCommand"
CommandAction="javascript:alert('Hello,Ribbon!');" />
</CommandUIHandlers>
</CommandUIExtension>
</CustomAction>
</Elements>
在上面的XML中,<CommandUIDefinitions>節點定義了Ribbon的位置及Ribbon中的控制元件,<CommandUIDefinitions>節點實現了Ribbon的功能,二者通過Command屬性進行關聯,功能非常簡單,彈出一”Hello,Ribbon!”對話方塊,在CommandUIDefinition中定義了Ribbon的位置,Ribbon.Documents.New即Documents標籤New組下,Button控制元件定義了它顯示的文字和圖片。
這樣,一個非常簡單的Ribbon就完成了,右擊專案名,選擇部署。注意:TemplateAlias="o2" />,並不是數字:零貳
找到對應的路徑,文件庫Ribbon的Document標籤New組下,如圖,已經有了我們建立的Hello Ribbon,點選,彈出“Hello ,Ribbon!”對話方塊。
細心的朋友可能會發現,這個過程怎麼這麼眼熟?沒錯,自定義一個Ribbon跟之前我們部署Feature是一樣,實際上,這就是一個Feature,在“站點集功能”中,能看到:
在對應的路徑下,也有我們的定義檔案:C:\Program Files\Common Files\Microsoft
Shared\Web Server Extensions\14\TEMPLATE\FEATURES\TestRibbon_Feature1。因此,我們完全可以通過像之前部署Feature一樣來新增Ribbon,這兒就不在贅述。
另外,在SharePoint 2010中已經定義了非常多的Ribbon,請參閱http://msdn.microsoft.com/en-us/library/ee537543(office.14).aspx,他們的定義在C:\Program
Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\GLOBAL\XML\ CMDUI.XML檔案中。