SharePoint GetListItems - получает все столбцы, фильтрует по заданному идентификатору списка. C # - PullRequest
3 голосов
/ 07 апреля 2011

В этом коде C # пользовательского WS - какой самый простой способ вернуть все столбцы списка (я вижу только 10 доступных атрибутов) и отфильтровать набор ID = 3. Должен ли я квалифицировать их всех в ndViewFields? где я могу разместить свой caml где? Спасибо.

XmlDocument xmlDoc = new System.Xml.XmlDocument();
        XmlNode ndQuery = xmlDoc.CreateNode(XmlNodeType.Element, "Query", "");
        XmlNode ndViewFields = xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", "");
        XmlNode ndQueryOptions = xmlDoc.CreateNode(XmlNodeType.Element, "QueryOptions", "");

        ndQueryOptions.InnerXml = "<IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns><DateInUtc>FALSE</DateInUtc><ExpandUserField>FALSE</ExpandUserField>";
        //ndViewFields.InnerXml = "<FieldRef Name='Title' /><FieldRef Name='Title' />";  //you don't need to specifically request the 'ID' column since it will be returned regardless   
        ndViewFields.InnerXml = "<FieldRef Name='Title' />";  //you don't need to specifically request the 'ID' column since it will be returned regardless   
        ndQuery.InnerXml = "<OrderBy><FieldRef Name='Title'/></OrderBy>";

        try
        {
            XmlNode ndListItems = wList.GetListItems("MyList", string.Empty, ndQuery, ndViewFields,null, ndQueryOptions, null);

            foreach (XmlNode node in ndListItems)
            {
                if (node.Name == "rs:data")
                {

                    for (int f = 0; f < node.ChildNodes.Count; f++)

                    {
                        if (node.ChildNodes[f].Name == "z:row")
                        {
                            //Add the employee ID to my 'employeeIDs' ArrayList   
                            Titles.Add(node.ChildNodes[f].Attributes["ows_Title"].Value);

Ответы [ 2 ]

4 голосов
/ 07 апреля 2011

Ваш ndQuery должен содержать:

<Query>
  <Where>
    <Eq>
      <FieldRef Name="ID" />
      <Value Type="Counter">3</Value>
    </Eq>
  </Where>
</Query>

и ndViewFields должны содержать:

<ViewFields>
  <FieldRef Name="ID" />
  <FieldRef Name="Title" />
  ... all other fields you need
</ViewFields>
2 голосов
/ 10 декабря 2012

Весь XML должен выглядеть так:

  <?xml version="1.0" encoding="utf-8" ?> 
 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <soap:Body>
 <GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">
  <listName>GUID Or Name</listName> 
 <query>
  <Query xmlns="">
   <Where>
    <Eq>
      <FieldRef Name="ID" /> 
      <Value Type="Counter">1</Value> 
     </Eq>
    </Where>
   </Query>
  </query>
<viewFields>
 <ViewFields xmlns="">
   <FieldRef Name="ID" /> 
   <FieldRef Name="Title" /> 
 </ViewFields>
</viewFields>
 <queryOptions>
  <QueryOptions xmlns="" /> 
  </queryOptions>
  </GetListItems>
  </soap:Body>
  </soap:Envelope>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...