我无法获取我的SharePoint ListItem字段

时间:2011-01-11 10:13:12

标签: silverlight sharepoint com web-parts

我想显示某个ListItem的所有字段。这包括LookUpFields和ChoiceFields。但我似乎只能显示Textfields,比如Title。如何显示ListItem的所有字段? 问题是,当我尝试以“标题”显示的方式显示列表项的其他字段时,我收到错误,好像我输入的字符串不存在于该列表项中的字段。但它们确实存在并且充满了价值! 在不获取ObjectReference错误的情况下显示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 Webpart运行。我将调试器附加到iexplorer.exe但它不会中断。 如果我能让调试器工作,那将是一个很大的帮助。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

要获取项属性,您需要在ClientContext.Load方法的第二个参数中指定所需的所有项属性

e.g

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