2010-06-29 25 views
0

Lorsque j'utilise CAML pour filtrer mon ListView, il ok quand j'utilise cette CAML:Lorsque j'utilise CAML pour filtrer ListView, <! - #RENDER ECHEC -> était le spectacle dans ListView

query = "<Where><Or>" + 
        "<And>" + 
         " <Eq>" + 
          "<FieldRef Name=\"TagForDiscussion\"></FieldRef>" + 
          "<Value Type=\"Text\">Tag</Value>" + 
         "</Eq>" + 
         "<IsNotNull>" + 
         "<FieldRef Name=\"TagForDiscussion\"></FieldRef>" + 
         "</IsNotNull>" + 
        "</And>" + 
        "<And>" + 
         " <Eq>" + 
          "<FieldRef Name=\"TagForDiscussion\"></FieldRef>" + 
          "<Value Type=\"Text\">Word</Value>" + 
         "</Eq>" + 
         "<IsNotNull>" + 
         "<FieldRef Name=\"TagForDiscussion\"></FieldRef>" + 
         "</IsNotNull>" + 
        "</And>" + 
        "</Or>" + 
       "</Where>"; 

Cela peut fonctionner correctement.

Mais quand je l'utilise Caml ci-dessous, il affichera erreur dans ListView

query = "<Where><Or>" + 
        "<And>" + 
         " <Eq>" + 
          "<FieldRef Name=\"TagForDiscussion\"></FieldRef>" + 
          "<Value Type=\"Text\">Tag</Value>" + 
         "</Eq>" + 
         "<IsNotNull>" + 
         "<FieldRef Name=\"TagForDiscussion\"></FieldRef>" + 
         "</IsNotNull>" + 
        "</And>" + 
        "<And>" + 
         " <Eq>" + 
          "<FieldRef Name=\"TagForDiscussion\"></FieldRef>" + 
          "<Value Type=\"Text\">Word</Value>" + 
         "</Eq>" + 
         "<IsNotNull>" + 
         "<FieldRef Name=\"TagForDiscussion\"></FieldRef>" + 
         "</IsNotNull>" + 
        "</And>" + 
        "<And>" + 
         " <Eq>" + 
          "<FieldRef Name=\"TagForDiscussion\"></FieldRef>" + 
          "<Value Type=\"Text\">Word Test</Value>" + 
         "</Eq>" + 
         "<IsNotNull>" + 
         "<FieldRef Name=\"TagForDiscussion\"></FieldRef>" + 
         "</IsNotNull>" + 
        "</And>" + 
        "</Or>" + 
       "</Where>"; 

Je viens d'ajouter un filtre sur la deuxième CAML, pourquoi il ne peut pas fonctionner?

Quelqu'un peut-il aider?

Merci kedk

Répondre

0

Vous essayez d'avoir 3 expressions dans l'élément <ou>, mais il permet seulement exactement deux.

donc vous devez changer:

<Or> 
    <And>...</And> 
    <And>...</And> 
    <And>...</And> 
</Or> 

à

<Or> 
    <Or> 
    <And>...</And> 
    <And>...</And> 
    </Or> 
    <And>...</And> 
</Or> 
0

L'opérateur ne peut prendre 2 opérandes, pas 3 (à la différence lorsque vous l'utilisez dans le code)

Par conséquent, vous aurez besoin de partager votre requête ou imbriquer le deuxième opérateur :

"<Where><Or>" + 
       "<And>" + 
        " <Eq>" + 
         "<FieldRef Name=\"TagForDiscussion\"></FieldRef>" + 
         "<Value Type=\"Text\">Tag</Value>" + 
        "</Eq>" + 
        "<IsNotNull>" + 
        "<FieldRef Name=\"TagForDiscussion\"></FieldRef>" + 
        "</IsNotNull>" + 
       "</And>" + 
       //Nest the second part of the Query by putting another <And> here 
       "<And>" + 
        "<And>" + 
        " <Eq>" + 
         "<FieldRef Name=\"TagForDiscussion\"></FieldRef>" + 
         "<Value Type=\"Text\">Word</Value>" + 
        "</Eq>" + 
        "<IsNotNull>" + 
        "<FieldRef Name=\"TagForDiscussion\"></FieldRef>" + 
        "</IsNotNull>" + 
        "</And>" + 
        "<And>" + 
        " <Eq>" + 
         "<FieldRef Name=\"TagForDiscussion\"></FieldRef>" + 
         "<Value Type=\"Text\">Word Test</Value>" + 
        "</Eq>" + 
        "<IsNotNull>" + 
        "<FieldRef Name=\"TagForDiscussion\"></FieldRef>" + 
        "</IsNotNull>" + 
        "</And>" + 
       "</And>" + 
       "</Or>" + 
      "</Where>";