Frage

Ich muss den CQWP mit mehr als drei Filtern verwenden, daher werde ich die QueryOverride mit einer CAML-Abfrage wie hier beschrieben .Ich kann dies nicht dazu bringen, beim Bereitstellen der Web-Partinstanz mit Elements.xml I.E. ALLUserWebPart und CDATA zu arbeiten.

Die Art und Weise, wie ich es mit normalen Filtern tat, war wie folgt (von Elements.xml) generasacodicetagpre.

Allerdings QueryOverride erfordert auch mit cdata .Das Problem ist, dass ich nicht "glänzende" verschachtelte "CDATA-Elemente zu tun ist.Ich habe es versucht, HTML-Codierung die CAML als Problemumgehung /Ansatz, aber ohne Erfolg.

Wie lautet die Lösung hier?Ich glaube, ich könnte ein paar Feature-Empfängercode schreiben, aber ich möchte das vermeiden, wenn ich kann.

War es hilfreich?

Lösung 2

@Andrey's response pinpointed me to the answer of this question. The Query needs to be Encoded. I tried that in my initial approach, but I must have missed something.

I had this CAML that I wanted to have in my QueryOverride

<Where>
  <And>
     <And>
        <Or>
           <Eq>
              <FieldRef Name='Status' />
              <Value Type='Choice'>Not Started</Value>
           </Eq>
           <Eq>
              <FieldRef Name='Status' />
              <Value Type='Choice'>Not Closed</Value>
           </Eq>
        </Or>
        <Leq>
           <FieldRef Name='TargetImplDate' />
           <Value Type='DateTime'>
              <Today />
           </Value>
        </Leq>
     </And>
     <Eq>
        <FieldRef Name='Category' />
        <Value Type='Choice'></Value>
     </Eq>
  </And>
</Where>
<OrderBy>
  <FieldRef Name='ProcessChoice' />
  <FieldRef Name='TargetImplDate' />
</OrderBy>

Using CDATA when I added the web part to the web part gallery, and adding it to the page and exporting it afterwards got the result

<property name="QueryOverride" type="string">&lt;Where&gt;&lt;And&gt;&lt;And&gt;&lt;Or&gt;&lt;Eq&gt;&lt;FieldRef Name='Status' /&gt;&lt;Value Type='Choice'&gt;Not Started&lt;/Value&gt;&lt;/Eq&gt;&lt;Eq&gt;&lt;FieldRef Name='Status' /&gt;&lt;Value Type='Choice'&gt;Not Closed&lt;/Value&gt;&lt;/Eq&gt;&lt;/Or&gt;&lt;Leq&gt;&lt;FieldRef Name='TargetImplDate' /&gt;&lt;Value Type='DateTime'&gt;&lt;Today /&gt;&lt;/Value&gt;&lt;/Leq&gt;&lt;/And&gt;&lt;Eq&gt;&lt;FieldRef Name='Category' /&gt;&lt;Value Type='Choice'&gt;&lt;/Value&gt;&lt;/Eq&gt;&lt;/And&gt;&lt;/Where&gt;&lt;OrderBy&gt;&lt;FieldRef Name='ProcessChoice' /&gt;&lt;FieldRef Name='TargetImplDate' /&gt;&lt;/OrderBy&gt;</property>

which worked as expected. Thanks @Andrey

Andere Tipps

Kind of workaround, but still: deploy CQWP without this property to a page, set the property programmatically, and then export webpart to .webpart file.

I anticipate some kind of double HTML encoding nightmare like as a result.

P.S. Not tested.

P.S.S. If you will not be able to export the webpart from browser, try using programmatic approach (ExportWebPart method of SPLimitedWebPartManager).

Please keep in mind that

<where> or &lt;Where&gt;

tag should go on the same line with

<property name="QueryOverride" type="string">

like this

 <property name="QueryOverride" type="string">&lt;Where&gt;
        &lt;Or&gt;
          &lt;Eq&gt;
            &lt;FieldRef Name="AssignedTo"/&gt;
            &lt;Value Type="User"&gt;
              &lt;UserID/&gt;
            &lt;/Value&gt;
          &lt;/Eq&gt;
          &lt;Membership Type="CurrentUserGroups"&gt;
            &lt;FieldRef Name="AssignedTo"/&gt;
          &lt;/Membership&gt;
        &lt;/Or&gt;
      &lt;/Where&gt;</property>

and NOT like this

 <property name="QueryOverride" type="string">
     &lt;Where&gt;
        &lt;Or&gt;
          &lt;Eq&gt;
            &lt;FieldRef Name="AssignedTo"/&gt;
            &lt;Value Type="User"&gt;
              &lt;UserID/&gt;
            &lt;/Value&gt;
          &lt;/Eq&gt;
          &lt;Membership Type="CurrentUserGroups"&gt;
            &lt;FieldRef Name="AssignedTo"/&gt;
          &lt;/Membership&gt;
        &lt;/Or&gt;
      &lt;/Where&gt;
</property>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top