Когда я использую CAML для фильтрации ListView, <! - #RENDER FAILED -> был показан в ListView - PullRequest
0 голосов
/ 29 июня 2010

Когда я использую CAML для фильтрации моего ListView, это нормально, когда я использую этот CAML:

  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>";

Может работать правильно.

Но когда я использую CAML ниже, в 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>";

Я просто добавляю фильтр на второй CAML, почему он не может работать?

Кто-нибудь может помочь?

Спасибо kedk

Ответы [ 2 ]

0 голосов
/ 29 июня 2010

Вы пытаетесь иметь 3 выражения в элементе , но допускается только ровно два.

Поэтому вам нужно изменить:

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

на

<Or>
  <Or>
     <And>...</And>
     <And>...</And>
  </Or>
  <And>...</And>
</Or>
0 голосов
/ 29 июня 2010

Оператор может принимать только 2 операнда, а не 3 (в отличие от того, когда вы используете его в коде)

Поэтому вам нужно будет разделить запрос или вложить второй оператор:

"<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>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...