2010-06-12 4 views
1

J'utilise le modèle d'objet Sharepoint 2010. J'essaie de récupérer le contenu d'une liste personnalisée. Tout fonctionne bien sauf si je tente de récupérer un champ de choix.Comment lire un champ de choix à partir du modèle d'objet client Sharepoint 2010

Lorsque je tente de récupérer le champ de choix, je suis une exception PropertyOrFieldNotInitializedException ...

Voici le code que je utilise:

  ClientContext clientContext = new ClientContext("https://mysite"); 
      clientContext.FormsAuthenticationLoginInfo = new FormsAuthenticationLoginInfo("aaa", bbb"); 
      clientContext.AuthenticationMode = ClientAuthenticationMode.FormsAuthentication; 

      List list = clientContext.Web.Lists.GetByTitle("mylist"); 
      CamlQuery camlQuery = new CamlQuery(); 
      camlQuery.ViewXml = "<View/>"; 

      ListItemCollection listItems = list.GetItems(camlQuery); 
      clientContext.Load(listItems); 
      clientContext.ExecuteQuery(); 

      foreach (ListItem listItem in listItems) 
      { 

       listBoxControl1.Items.Add(listItem["Assigned_x0020_Company"]); 

      } 

Merci pour votre aide!

Eric

Répondre

0

Lorsque vous lisez un ChoiceField dans le code, il renvoie un tableau de chaînes de choix sélectionnés. Par exemple si vous avez entré dans la boîte de choix de la colonne lorsque vous le créez: "Société 1", "Société 2", "Société 3", si l'utilisateur sélectionnez l'option 1 & 2, alors le tableau retourné dans le code contiendra "Société 1 "et « Company 2 » .Vous devez modifier le code au-dessous:

  foreach (ListItem listItem in listItems) 
     { 
      string[] values = (string[])listItem["Assigned_x0020_Company"]; 
      foreach(string s in values) 
      { 
       listBoxControl1.Items.Add(s); 
      } 

     } 
2
var list = clientContext.Web.Lists.GetByTitle(listName); 
clientContext.ExecuteQuery(); 

clientContext.Load(list.Fields, fields => fields.Include(field => field.Title)); 
clientContext.ExecuteQuery(); 

foreach (var field in list.Fields) 
{ 
    if (field.Title == "YourChoiceFieldName") 
    { 
     clientContext.Load(field); 
     clientContext.ExecuteQuery(); 
     return ((FieldChoice) field).Choices; 
    } 
} 
+0

a parfaitement fonctionné pour moi en utilisant 'microsoft.sharepoint.client namespace' – jonathana

0

Shayan a fourni la réponse à obtenir la valeur d'une colonne de choix le plus simple Multiselect dans way.You sont Genius.

Questions connexes