Search code examples
silverlightsharepointcomweb-parts

I can't get my SharePoint ListItem Fields


I want to show all fields of a certain ListItem. This includes LookUpFields and ChoiceFields. But I only seem to be able to show Textfields, like Title. How can I show all fields of my ListItem? The problem is that I get an error when I try to show other fields of a listitem the way I got 'Title' to show, as if the strings I type in don't exist as fields in that listitem. But they do exist and are populated with values! What is good way to show custom fields of a listitem without getting ObjectReference errors? Also I get this error: The given key was not present in the dictionary.

    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.
        }
}

Edit: What also is a big problem is I cant get the debugger working. This code is running as a Silverlight webpart on a local Sharepoint site. I attach the debugger to the iexplorer.exe but it won't break. If I could get the debugger to work it would be a great help indeed.


Solution

  • you have tell the query what all fields you need to pull from lists

    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();
    

    for more details

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