SharePoint: ошибка запроса CAML при создании запроса SPQuery - PullRequest
2 голосов
/ 15 августа 2011

У меня есть этот запрос CAML

var query = new SPQuery
                                {
                                    Query = string.Format(@"<Where>
                                        <Or>
                                            <Or>
                                                <Or>
                                                    <Or>
                                                        <Contains>
                                                            <FieldRef Name='{7}' />
                                                            <Value Type='Text'>{3}</Value>
                                                        </Contains>
                                                    </Or>
                                                    <Contains>
                                                        <FieldRef Name='{6}' />
                                                        <Value Type='Text'>{2}</Value>
                                                    </Contains>
                                                </Or
                                                <Contains>
                                                    <FieldRef Name='{5}' />
                                                    <Value Type='Text'>{1}</Value>
                                                </Contains>
                                            </Or>
                                            <Contains>
                                                <FieldRef Name='{4}' />
                                                <Value Type='Text'>{0}</Value>
                                            </Contains>
                                        </Or>
                                    </Where>", "title", "adress", "zipcode", "city", "searchTitle", "searchAdress", "searchZipcode", "searchCity")
                                };

Каждый раз, когда он запускается, и я пытаюсь использовать List.GetItems(query);, он выдает эту ошибку:

One or more field types are not installed properly. Go to the list settings page to delete these fields.

НО! Если я удаляю все теги <Or>, он работает и не выдает эту ошибку, но мне нужны теги <Or>, чтобы убедиться, что он получает все попадания.

Я убедился, что все fieldrefs соответствуют внутренним именам столбцов на 100%.

Ответы [ 2 ]

0 голосов
/ 16 августа 2011

исправьте свой CAML

    var query = new SPQuery
                            {
                                Query = string.Format(@"<Where>
                                        <Or>
                                            <Or>
                                                <Or>
                                                    <Contains>
                                                        <FieldRef Name='{7}' />
                                                        <Value Type='Text'>{3}</Value>
                                                    </Contains>
                                                    <Contains>
                                                        <FieldRef Name='{6}' />
                                                        <Value Type='Text'>{2}</Value>
                                                    </Contains>
                                                </Or>
                                                <Contains>
                                                    <FieldRef Name='{5}' />
                                                    <Value Type='Text'>{1}</Value>
                                                </Contains>
                                            </Or>
                                            <Contains>
                                                <FieldRef Name='{4}' />
                                                <Value Type='Text'>{0}</Value>
                                            </Contains>
                                        </Or>
                                </Where>", "title", "adress", "zipcode", "city", "searchTitle", "searchAdress", "searchZipcode", "searchCity")
                            };
0 голосов
/ 15 августа 2011

Вы пробовали свой запрос без элемента Contains 7/3? Это имо не нужно.

Также один из ваших / или не имеет закрывающей скобки <Value Type='Text'>{2}</Value></Contains></Or<Contains>, это может быть причиной ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...