2011-02-16 54 views
1

我有一個功能,它提供了一個自定義Default.aspx文件到我的發佈站點SharePoint 2010:如何在AllUsersWebPart XML中對Web部件ID進行硬編碼?

的Elements.xml,我有填充Web部件的區域不同AllUsersWebPart節點。在這一點上,我需要爲這些Web部件提供硬編碼ID(guid) - 有誰知道如何做到這一點?

我知道,一個web部件ID的格式爲g_00000000_0000_0000_0000_000000000000,但如果我添加一個ID屬性(見下文),然後激活我的特點,的webpart的GUID是各不相同。

<AllUsersWebPart WebPartZoneID="TopZone" WebPartOrder="1"> 
<![CDATA[ 
    <webParts> 
     <webPart xmlns="http://schemas.microsoft.com/WebPart/v3"> 
      <metaData> 
       <type name="..." /> 
       <importErrorMessage>...</importErrorMessage> 
      </metaData> 
      <data> 
       <properties> 
        <property name="ID" type="string">g_FB777184_F9AB_4747_AA71_1BF0C96E535A</property> 
       </properties> 
      </data> 
     </webPart> 
    </webParts> 
]]> 
</AllUsersWebPart> 

FYI:我需要硬編碼的ID,我的每個Web部件,因爲我有一個使用的ID來定位頁面上的每個Web部件(我有6倍相同的部件在頁面上一個單獨的功能接收器相同的標題),然後它爲每個部分分配一個觀衆(使得在任何給定時間只有1人可見)。

回答

0

好消息和壞消息......

我所用的方法是在事實上是有效,但它只會工作,如果你的Web部件放置在Web部件區域。如果放置在區域中,Web部件基礎結構會自動設置WebPart.ID值(在MSDN上確認)。

爲了對Web部件ID進行硬編碼,您需要將Web部件直接放置在頁面佈局中(以便您可以將它們直接放在頁面的標記中)。

就我個人而言,我選擇將Web部件留在區域中,而是使用獨特的標題,稍後可以在我的功能接收器中使用這些標題來識別部件。

0

(完全替代解決您原來的問題,不是一個真正的問題的答案):

你爲什麼不使用SPWebPartManager(從功能接收器內),以抓住從Web部件頁面,並設置你的屬性?

我假設6x相同的將位於相同的區域中,一個接一個地放置,因此您可以通過Web部件遍歷管理員類中的部件所屬的特定區域。

+0

感謝您的意見詹姆斯。你絕對是在正確的軌道上,除了只有一兩個陷阱... 因爲我的功能被激活作爲網站定義的一部分,我需要在我的功能接收器中使用SPLimitedWebPartManager - 而這包含任何區域信息。因此,我目前正在遍歷頁面中的每個Web部件,並檢查Web部件標題,儘管我希望能讓我的6個受衆定位的部件都具有相同的內容,例如,與「新聞 - 受衆名稱1」等相關的「新聞」。這就是爲什麼我希望使用ID來區分它們。 – 2011-02-17 11:26:40

4

你太親近了。嘗試使用「AllUsersWebPart」元素的「id」屬性(或者,如果供應使用「查看」元素的列表視圖Web部件):

<View List="Lists/Announcements" BaseViewID="0" WebPartZoneID="Top" ID="g_42fa735b_3cae_47d2_a773_b591b9abfd7a" /> 

<AllUsersWebPart ID="g_21f871c5_3575_4182_a7e2_64f682877071" WebPartOrder="1" WebPartZoneID="Top"> 
    <![CDATA[ 
    <webParts> 
     <webPart xmlns="http://schemas.microsoft.com/WebPart/v3"> 
     <metaData> 
      <type name="Microsoft.SharePoint.WebPartPages.XsltListViewWebPart, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" /> 
      <importErrorMessage>Cannot import this Web Part.</importErrorMessage> 
     </metaData> 
     <data> 
      <properties> 
      <property name="ListUrl" type="string">Lists/Tasks</property> 
      <property name="ExportMode" type="exportmode">All</property> 
      </properties> 
     </data> 
     </webPart> 
    </webParts> 
    ]]> 
    </AllUsersWebPart> 
相關問題