2011-01-11 38 views
0

我想顯示某個ListItem的所有字段。這包括LookUpFields和ChoiceFields。但我似乎只能顯示Textfields,比如Title。我如何顯示我的ListItem的所有字段? 問題是,當我嘗試顯示listitem的其他字段時,出現「標題」顯示的方式時出現錯誤,就好像我輸入的字符串不存在該列表項中的字段一樣。但他們確實存在並且充滿了價值! 什麼是不顯示ObjectReference錯誤而顯示listitem的自定義字段的好方法? 另外我得到這個錯誤:給定的關鍵字不在字典中。我無法獲取我的SharePoint ListItem字段

private void foo() 
    { 
     using (ClientContext context = new ClientContext(ApplicationContext.Current.Url)) 
     { 
      _list = context.Web.Lists.GetByTitle("MyList").Title); 
      _items = _list.GetItems(CamlQuery.CreateAllItemsQuery()); 
      context.Load(_items); 
      context.ExecuteQueryAsync(
       new ClientRequestSucceededEventHandler(OnListItemsRequestSucceeded), 
       new ClientRequestFailedEventHandler(OnListItemsRequestFailed)); 
     } 
    } 
private void OnListItemsRequestSucceeded(Object sender, ClientRequestSucceededEventArgs args) 
    { 
     // this is not called on the UI thread 
     Dispatcher.BeginInvoke(ShowListItemDetails); 
    } 
public void ShowListItemDetails() 
    { 
foreach (ListItem i in _items) 
     { 
TextBox_Details.Text += i["Title"].ToString() + Environment.NewLine; 
// Now the rest of the fields of this item. 
     } 
} 

編輯:什麼也是一個大問題是我不能讓調試器工作。此代碼作爲本地Sharepoint網站上的Silverlight Web部件運行。我將調試器附加到iexplorer.exe,但不會中斷。 如果我能讓調試器工作,確實會有很大的幫助。

+0

而問題其實是*什麼*?轉儲更多字段時會出現什麼問題?處理非文本字段時遇到什麼問題? – 2011-01-11 10:17:08

+0

Ondrej可能意味着你應該給我們在處理非文本字段時遇到的錯誤。另外:在你的foreach ListItem循環中設置一個斷點,你可以訪問所有的字段(只是爲了看看它們在那裏)。 – 2011-01-11 10:22:38

回答

1

你必須告訴查詢你需要從列表中拉

CamlQuery camlQuery = new CamlQuery(); 
      camlQuery.ListItemCollectionPosition = itemPosition; 
      camlQuery.ViewXml = 
       @"<View> 
        <ViewFields> 
         <FieldRef Name='Title'/> 
         <FieldRef Name='Category'/> 
         <FieldRef Name='Estimate'/> 
        </ViewFields> 
        <RowLimit>10</RowLimit> 
        </View>"; 
      ListItemCollection listItems = list.GetItems(camlQuery); 
      clientContext.Load(listItems); 
      clientContext.ExecuteQuery(); 

更多細節

http://msdn.microsoft.com/en-us/library/ee857094.aspx#SP2010ClientOM_Accessing_Large_Lists

0

要獲得項目屬性,你需要指定所有的項目屬性的所有領域您需要在ClientContext.Load方法的第二個參數中使用

例如

 string server = "http://localhost"; 
     ClientContext context = new ClientContext(server); 
     Web web = context.Web; 
     var spList = web.Lists.GetByTitle("MyTitle"); 
     CamlQuery query = new CamlQuery(); 
     var items = spList.GetItems(query); 
     context.Load(items, 
      itema => itema.Include(
       item => item, 
       item => item["ComplexProperty"])); 
     context.ExecuteQuery();` 
相關問題