通过客户端对象模型获取DefaultView

时间:2011-08-08 15:05:12

标签: sharepoint client-object-model

我想通过客户端对象模型(我正在使用Silverlight)为Sharepoint list加载默认视图的字段。以下是我发现的一些相关内容(on msdn here):

  • 班级List的财产DefaultViewUrl [类型string]
  • 班级List有方法GetView(Guid)
  • 班级List的财产Views [类型ViewCollection]
  • 班级ViewCollection有方法GetById(Guid)
  • 班级ViewCollection有方法GetByTitle(string)
  • 班级View的财产DefaultView [类型bool]

这就是我能找到的一切。正如您所看到的,没有直接获取DefaultView的方法(DefaultViewId上的ListGetByUrl(string)方法上缺少ViewCollection属性。

对我来说,唯一的解决方案是遍历List.Views集合并检查每个DefaultView上的View属性。哪种......好吧,效率低......

我错过了什么吗?有人看到一些直言不讳吗? 谢谢您的想法。

2 个答案:

答案 0 :(得分:1)

使用LINQ语句尝试LoadQuery

例如:

private IEnumerable<View> viewQuery = null;
public void LoadDefaultView()
{
    using (ClientContext ctx = ClientContext.Current)
    {
        list = ctx.Web.Lists.GetByTitle("YourList");

        viewQuery = ctx.LoadQuery(list.Views
                   .Include(v => v.Title) // include more lamda statements here to populate View Properties
                   .Where(v => v.DefaultView == true));

        ctx.ExecuteQueryAsync(LoadDefaultViewSuccess, LoadDefaultViewFailure);
    }
}
private void LoadDefaultViewSuccess(object sender, ClientRequestSucceededEventArgs args)
{
    // should only be one View in views
    View defaultView = viewQuery.FirstOrDefault();

    // use default.Title here
}
private void LoadDefaultViewFailure(object sender, ClientRequestFailedEventArgs args)
{
    // handle failure here
}

MSDN SharePoint 2010 Silverlight COM文章 http://msdn.microsoft.com/en-us/library/ee538971.aspx

答案 1 :(得分:0)

SPList.DefaultView怎么样? SPList DefaultView成员是SPView对象(不是bool)