Object 如何从Sharepoint 2010客户端对象模型中读取选择字段

Object 如何从Sharepoint 2010客户端对象模型中读取选择字段,object,model,sharepoint-2010,choice,Object,Model,Sharepoint 2010,Choice,我正在使用Sharepoint 2010对象模型。我正在尝试检索自定义列表的内容。除了当我试图检索一个选择字段时,一切都正常 当我试图检索选择字段时,我得到一个PropertyOrFieldNotInitializedException异常 以下是我正在使用的代码: ClientContext clientContext = new ClientContext("https://mysite"); clientContext.FormsAuthen

我正在使用Sharepoint 2010对象模型。我正在尝试检索自定义列表的内容。除了当我试图检索一个选择字段时,一切都正常

当我试图检索选择字段时,我得到一个PropertyOrFieldNotInitializedException异常

以下是我正在使用的代码:

            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"]);

            }
ClientContext ClientContext=newclientcontext(“https://mysite");
clientContext.FormsAuthenticationLoginInfo=新的FormsAuthenticationLoginInfo(“aaa”,bbb”);
clientContext.AuthenticationMode=ClientAuthenticationMode.FormsAuthentication;
List List=clientContext.Web.Lists.GetByTitle(“mylist”);
CamlQuery CamlQuery=新的CamlQuery();
camlQuery.ViewXml=“”;
ListItemCollection listItems=list.GetItems(camlQuery);
加载(listItems);
clientContext.ExecuteQuery();
foreach(listItems中的ListItem ListItem)
{
listBoxControl1.Items.Add(listItem[“已分配的公司]);
}
谢谢你的帮助


Eric

读取代码中的ChoiceField时,它将返回所选选项的字符串数组。例如,如果在创建列时在列的选择框中输入:“公司1”、“公司2”、“公司3”,如果用户选择选项1和2,则代码中返回的数组将包含“公司1”和“公司2”“。您必须将代码更改为以下内容:

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

        }

使用
microsoft.sharepoint.client命名空间
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;
    }
}