2

Sharepoint 2010 オブジェクト モデルを使用しています。カスタム リストのコンテンツを取得しようとしています。Choice フィールドを取得しようとする場合を除いて、すべて正常に動作します。

選択フィールドを取得しようとすると、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"]);

            }

助けてくれてありがとう!

エリック

4

2 に答える 2

3
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;
    }
}
于 2012-11-08T12:26:38.287 に答える
0

コードでChoiceFieldを読み取ると、選択した選択肢の文字列配列が返されます。たとえば、列の作成時に列の選択ボックスに「Company 1」、「Company 2」、「Company 3」と入力した場合、ユーザーがオプション1と2を選択すると、コードで返される配列には「Company1」が含まれます。 "および"Company2 "。コードを次のように変更する必要があります:

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

        }
于 2012-02-08T14:10:58.460 に答える