2016-08-05 40 views
0

Ich versuche nur Werte aus der Liste der Sharepoint angegeben zu bekommen, so meinen Code ist dies:abrufen bestimmte Elemente aus der Liste Sharepoint Online WebAPI

public List<MenuPrincipal> GetMenuOptions(string idioma) 
     { 
      List<MenuPrincipal> result = new List<MenuPrincipal>(); 
      try 
      { 
       SecureString pwd = SPAccess.GetPasswordFromConsoleInput(Definitions.UserPassword); 

       using (var context = new ClientContext(Definitions.WebUrl)) 
       { 
        context.Credentials = new SharePointOnlineCredentials(Definitions.UserName, pwd); 
        List listResult = context.Web.Lists.GetByTitle("MenuPrincipal"); 

        //CamlQuery query = CamlQuery.CreateAllItemsQuery(1000); 

        CamlQuery query = new CamlQuery(); 
        query.ViewXml = string.Format("<View><Query><Where><Eq><FieldRef Name='Idioma'/><Value Type='Text'>{0}</Value></Eq></Where></Query><RowLimit>1000</RowLimit></View>", idioma); 
        ListItemCollection items = listResult.GetItems(query); 



        context.Load(items); 
        context.ExecuteQuery(); 

        foreach (ListItem item in items) 
        { 
         result.Add(new MenuPrincipal 
         { 
          Titile = item["Title"] == null ? string.Empty : item["Title"].ToString(), 
          Enlace = item["Enlace"] == null ? string.Empty : item["Enlace"].ToString(), 
          Posicion = item["Posicion"] == null ? 0 : Convert.ToInt32(item["Posicion"]), 
          Idioma = item["Idioma"] == null ? string.Empty : item["Idioma"].ToString(), 
          Funcion = item["Funcion"] == null ? string.Empty : item["Funcion"].ToString() 
         });  
        } 
       } 
      } 
      catch (Exception) 
      { 
       throw; 
      } 

      return result.OrderBy(x => x.Posicion).ToList(); 
     } 

Aber es wird eine Menge von Werten, und ich nur Werte brauchen, die in sind mein foreach, so versuche ich, so etwas wie zu tun:

context.Load(
      items, 
       lists => lists.Include( 
       list => list.Titile. 
       list => list.Enlace, 
       list => list.Posicion, 
       list => list.Idioma, 
       list => list.Funcion)); 

statt context.Load(items);

Aber all meiner Liste ist rot wie Foto markiert: enter image description here

MSN Reference

Kann mir jemand helfen, wie bestimmte Felder dort abzurufen? Diese Grüße

Antwort

0

ist, weil Title, Enlace und andere Eigenschaften, die Sie müde definiert sind, nicht auf der ListItem, Sie Eigenschaften wie Id oder DisplayName laden können aber benutzerdefinierte Felder Sie die gleichen, wie Sie diejenigen Zugriff angeben müssen laden - mit [] wie auf dem Schnipsel unter

context.Load(
      items, 
       columns => columns.Include( 
       i=> i["Title"], 
       i=> i["Enlace"], 
       i=> i["Posicion"], 
       i=> i["Idioma"], 
       i=> i["Funcion"]));