2016-10-26 3 views
0

мы должны работать на стороне клиента SharePoint, поэтому я использую Javascript, а не C#. Я хочу сделать запрос с «содержит», как такЗапрос CAML с Javascript и <Contains>

function onRequestSucceeded() { 
    myList = website.get_lists().getByTitle("Prüfberichte"); 
    var query = '<Where><Contains><FieldRef Name="Name_x0020_Lieferant_x0020__x0028_Supplier_x0020_name_x0029_"/><Value Type="Text">Hans</Value></Contains></Where>'; 
    camlQuery = new SP.CamlQuery(); 
    camlQuery.set_viewXml(query); 
    items = myList.getItems(camlQuery); 
    clientContext.load(items, 'Include(Id, DisplayName, HasUniqueRoleAssignments)'); 
    clientContext.executeQueryAsync(onQuerySucceeded, onQueryFailed); 
} 

К сожалению, это возвращает весь список, вместо одного элемента, который содержит «Ганс».

Это «содержит» -специальную проблему, «Eq» отлично работает.

Вся помощь будет с радостью оценена!

+0

Я знаю, что вопросы http://stackoverflow.com/questions/1870314/sharepoint-list-caml-query-using-contains не решила мою проблему, хотя – Annika

+1

Работает ли она, если вы включаете внешние '' и '' теги вокруг запроса, как в [этом примере] (http://stackoverflow.com/documentation/sharepoint/1316/working-with-javascript-client-object-model-jsom/7817/ получить-элементы списка-by-КАМЛ-запрос # т = 201610261451135890854)? – Thriggle

ответ

0

В SharePoint JSOM APISP.CamlQuery.viewXml property принимает XML-схемы, которая имеет следующую структуру:

<View> 
    <Query> 
      <Where> 
       ... 
      <Where> 
    </Query> 
</View> 

, например:

var query=new SP.CamlQuery(); 
query.set_viewXml('<View Scope="RecursiveAll"><Query><Where><Eq><FieldRef Name="FSObjType" /><Value Type="Integer">1</Value></Eq></Where></Query></View>'); 

Когда недействителен схема XML предоставляется (как в вашем случае) запрос игнорируется, и все элементы возвращаются (стандартное поведение), скорее всего, это причина, по которой это происходит в вашем случае.