2015-11-17 15 views
0

我無法通過內部名稱使用CSOM獲取新添加的託管元數據字段。但是,該字段的相關隱藏文本字段可用。下面的語句拋出Microsoft.SharePoint.Client.PropertyOrFieldNotInitializedException無法使用CSOM獲取託管元數據字段。字段未初始化錯誤

以下是代碼以獲取列表項

List lst= context.Web.Lists.GetByTitle(<ListName>); 
    CamlQuery camlQuery = new CamlQuery 
        { 
         ViewXml = @"<View> 
             <Query> 
               <Where> 
                 <Or> 
                  <Eq> 
                   <FieldRef Name='SCStatus' /> 
                   <Value Type='TaxonomyFieldType'>Approved</Value> 
                  </Eq> 
                  <Eq> 
                   <FieldRef Name='SCStatus' /> 
                   <Value Type='TaxonomyFieldType'>UpdateRequested</Value> 
                  </Eq> 
                 </Or> 
               </Where> 
             </Query> 
            </View>"; 
        }; 

    ListItemCollection listItems = lst.GetItems(camlQuery); 

    context.Load(listItems); 
    context.ExecuteQuery(); 

下面的語句來獲取字段值

(listItem[<InternalName>] as TaxonomyFieldValue).Label 

請注意,其他分類學領域可用。

回答

1

error因爲Load<T>(T, \[\]) method沒有返回指定的字段,所以需要顯式地請求。

你可以考慮以下選項:

使用Include方法

明確指定的字段通過Load<T>(T, \[\]) method檢索,例如:

var qry = new CamlQuery(); 
var items = list.GetItems(qry); 
ctx.Load(items, 
      icol => icol.Include(
       i => item.Id, 
       i => item.DisplayName, 
       i => item["TaxFieldName"])); //specify taxonomy field 
ctx.ExecuteQuery(); 

使用在ViewFields CAML查詢

使用ViewFields元素來指定哪些字段檢索,例如:

var qry = new CamlQuery(); 
qry.ViewXml = "<View>" + 
       "<ViewFields>" + 
        "<FieldRef Name='ID'/>" + 
        "<FieldRef Name='Title'/>" + 
        "<FieldRef Name='TaxFieldName'/>" + 
       "</ViewFields>" + 
       "</View>"; 
var items = list.GetItems(qry); 
ctx.Load(items); 
ctx.ExecuteQuery();