使用 Visual Studio SharePoint 列表向导将文档库列表的名称字段导出到移动应用程序。 当用户在 SharePoint 中创建一个文档库的移动应用程序时,名称字段不会自动出现。 在文档库列表中,用户可以上传各种文档。 文档的列表项通常具有 标题、 名称以及指向文档的链接作为属性。 如果开发人员针对文档库创建Windows Phone 7 应用,则 IDE 向导中不会导出“名称”字段。 因此,开发人员无法轻松了解文档名称。 (这是因为默认情况下 SharePoint 不支持类型为“FILE”的字段。)
注意
Title 属性不包括文件扩展名。
所以,如果要读取文档、创建文档的完整 URL 并在默认应用程序(例如 Word)中打开文档,您必须编写代码来获取实际的文件名。
重要说明:若要开发 Windows Phone 8 版应用,必须使用 Visual Studio Express 2012,而不是 Visual Studio 2010 Express。 除开发环境外,本文中的其他所有信息都适用于创建 Windows Phone 8 和 Windows Phone 7 版应用。 > 有关详细信息,请参阅 如何:设置用于开发 SharePoint 移动应用的环境。
导出文档库的“名称”字段的先决条件
SharePoint
带有新 SharePoint 模板的 Visual Studio Express 2010
自定义生成的类
若要从文档库中导出 Name 字段并访问附件,您必须更改 ListDataProvider 类、DisplayItemViewModel.cs 和 DisplayForm 类。 当开发人员从 Visual Studio 使用新的 SPList 向导时,该向导会创建多个遵循 Model-View-ViewModel 设计模式的类。 (有关详细信息,请参阅 使用 Model-View-ViewModel Pattern.) 创建了两个文件夹:一个文件夹名为 Views,包含修改各种列表视图 (所需的所有文件,例如 DisplayForm、EditForm、List 和 NewForm) 。 另一个名为 ViewModels,其中包含 DisplayItemViewModel、EditItemViewModel、ListViewModel、NewItemViewModel。 您将修改由向导生成的这些类中的某些类。
步骤 1:修改 ListDataProvider 以获取 SPListItem.File 属性
在 ListDataProvider 类中,在 LoadItem 方法中添加以下代码行。
Context.Load(spListItem, Item => Item.File);
此外,在 ListDataProvider 类中,在 LoadData 方法中添加以下代码。
Context.Load(items, listItems => listItems.Include(item => item.File));
步骤 2:添加 FileUrl 和 FileName 属性
- 在 DisplayItemViewModel.cs 中,将以下代码添加到 DisplayVM。
public string m_fileUrl;
public string FileUrl
{
get
{
if (string.IsNullOrEmpty(m_fileUrl))
{
IListDataProvider p = this.DataProvider;
p.LoadItem(this.ID, (LoadItemCompletedEventArgs args) =>
{
FileUrl = this.DataProvider.SiteUrl +
args.Item.File.ServerRelativeUrl;
});
}
return m_fileUrl;
}
set
{
m_fileUrl = value;
RaisePropertyChanged("FileUrl");
}
}
public string m_fileName;
public string FileName
{
get
{
if (string.IsNullOrEmpty(m_fileName))
{
IListDataProvider p = this.DataProvider;
p.LoadItem(this.ID, (LoadItemCompletedEventArgs args) =>
{
FileName = args.Item.File.Name;
});
}
return m_fileName;
}
set
{
m_fileName = value;
RaisePropertyChanged("FileName");
}
}
步骤 3:将超链接添加到绑定到 FileUrl 和 FileName 的 DisplayForm
- 在显示窗体中添加以下更改。
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal" Margin="0,5,0,5">
<TextBlock TextWrapping="Wrap" Width="150" HorizontalAlignment="Left"
Style="{StaticResource PhoneTextNormalStyle}">
FileUrl :
</TextBlock>
<HyperlinkButton Content="{Binding FileName}" NavigateUri="{Binding FileUrl}"
x:Name="hypFile" TargetName="_blank" />
</StackPanel>