7

In a module, I'm deploying a webpart page where I put a view to a list:

  <View WebPartZoneID="Body"            
        WebPartOrder="3"
        List="related"
        BaseViewID="4"
        Scope="Recursive"
        Name="Documents">
  </View>

This is working.

Now I want to connect this resulting webpart with a QueryStringFilterWebPart.

In order to declare the connection, I have to know the ID of the Webpart.

How can I set up the id of the resulting webpart?

Here is what I tried:

use an AllUserWebPart node instead of a view:

First, I replace the view node by this one :

<AllUsersWebPart ID="relatedDocumentsView"
                   WebPartOrder="2"
                   WebPartZoneID="Body"
       >
    <![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>$Resources:core,ImportErrorMessage;</importErrorMessage>
        </metaData>
        <data>
          <properties>
            <property name="Title" type="string">Documents rattachés</property>
            <property name="Description" type="string">My WebPart</property>
            <property name="ListUrl" type="string">related</property>
    <property name="TitleUrl" type="string">#</property>
    <property name="BaseViewID" type="int">4</property>
         </properties>
        </data>
      </webPart>
    </webParts>]]>
  </AllUsersWebPart>

Then I setup the connection :

<WebPartConnection ID="connectionFilterRelatedDocuments"
                     ProviderID="queryStringFilterProvider"
                     ProviderConnectionPointID="ITransformableFilterValues"
                     ConsumerID="relatedDocumentsView"
                     ConsumerConnectionPointID="DFWP Filter Consumer ID">
    <WebPartTransformer Assembly="Microsoft.SharePoint,Version=14.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c"
                        Namespace="Microsoft.SharePoint.WebPartPages">
      <![CDATA[<WebPartPages:TransformableFilterValuesToParametersTransformer
      ConsumerFieldNames="RelatedCase"
      ProviderFieldNames="QueryString"
      />]]>
    </WebPartTransformer>
  </WebPartConnection>

This is nearly working. Actually, the connection is made between the webparts, but the view has two problems :

  1. The baseviewID is not correctly applied. I have to set it up manually after the deployment.
  2. The view is not considered as a webpart view. If I go to the webpart properties, I choose to customize the view. The screen is asking me for a view name, and a view URL (same as a view from the library itself).
  3. If I add a group by clause with SPD (a group by that is working perfectly in the view from the library itself), I get a mystical

Attempted to use an object that has ceased to exist. (Exception from HRESULT: 0x80030102 (STG_E_REVERTED))

Try to set up the ID

Whether I setup the id using

  <View WebPartZoneID="Body"
        Url="Pages/home.aspx"
        WebPartOrder="3"
        List="related"
        BaseViewID="4"
        Scope="Recursive"
        Name="Documents">
    <![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="Title" type="string">Documents</property>
          <property name="TitleUrl" type="string">#</property>
          <property name="ID" type="string">relatedDocumentsView</property>
        </properties>
    </data>
</webPart>
</webParts>
]]>
  </View>

Or :

  <View WebPartZoneID="Body"
        Url="Pages/home.aspx"
        WebPartOrder="3"
        ID="relatedDocumentsView"
        List="related"
        BaseViewID="4"
        Scope="Recursive"
        Name="Documents"/>

, the WebPart is deployed and working, but the connection is not made. I'm quite sure it's because of the ID that is not set.

I know I can connect the webpart from a feature receiver, but I'd like to keep my full XML deployment, model.

Does anyone know how can I specify the ID, or properly connect my webparts?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.