Compartir a través de


Exportar el campo Nombre en una lista de biblioteca de documentos en una aplicación móvil

Exporte a una aplicación móvil el campo Nombre de una lista de biblioteca de documentos mediante el asistente para lista de SharePoint de Visual Studio. El campo Nombre no aparece automáticamente cuando un usuario crea una aplicación móvil para una biblioteca de documentos en SharePoint. En una lista de biblioteca de documentos, un usuario puede cargar diversos documentos. Cada elemento de lista de un documento suele tener Title, Name y un vínculo al documento como propiedades. Si un desarrollador crea una aplicación de Windows Phone 7 contra la biblioteca de documentos, el campo Name no se exporta en el asistente de IDE. Por ello, el desarrollador no tiene ninguna manera sencilla de conocer el nombre del documento. (Esto se debe a que SharePoint no admite campos de tipo "FILE" de forma predeterminada).

Nota:

[!NOTA] La propiedad Title no incluye la extensión del nombre de archivo.

De modo que, si desea capturar un documento, generar la dirección URL completa del documento y abrir el documento en la aplicación predeterminada (por ejemplo, Word), debe escribir un código para obtener el nombre del archivo real.

Importante: Si está desarrollando una aplicación para Windows Phone 8, debe usar Visual Studio Express 2012 en lugar de Visual Studio 2010 Express. Salvo para el entorno de desarrollo, toda la información de este artículo se aplica a la creación de aplicaciones para Windows Phone 8 y Windows Phone 7. > Para obtener más información, vea Cómo: Configurar un entorno para desarrollar aplicaciones móviles para SharePoint.

Requisitos previos para exportar el campo Nombre de una biblioteca de documentos

  • SharePoint

  • Visual Studio Express 2010 con las nuevas plantillas de SharePoint

Personalizar las clases generadas

Para exportar el campo Name y acceder a los datos adjuntos de una biblioteca de documentos, debe realizar algunos cambios en la clase ListDataProvider, en DisplayItemViewModel.cs y en la clase DisplayForm. Cuando un desarrollador utiliza el nuevo asistente de SPList desde Visual Studio, el asistente crea varias clases que siguen el patrón de diseño Model-View-ViewModel. (Para obtener más información, consulte Uso del patrón Model-View-ViewModel.) Se crean dos carpetas: una se denomina Views y contiene todos los archivos necesarios para modificar diversas vistas de lista (como DisplayForm, EditForm, List y NewForm). La otra se denomina ViewModels y contiene DisplayItemViewModel, EditItemViewModel, ListViewModel y NewItemViewModel. Usted modificará algunas de estas clases generadas por el asistente.

Paso 1: modificar ListDataProvider para capturar la propiedad SPListItem.File

  1. En la clase ListDataProvider, agregue la siguiente línea de código en el método LoadItem.

    Context.Load(spListItem, Item => Item.File);

  2. También en la clase ListDataProvider, agregue el siguiente código en el método LoadData.

    Context.Load(items, listItems => listItems.Include(item => item.File));

Paso 2: agregar las propiedades FileUrl y FileName

  • En DisplayItemViewModel.cs, agregue el siguiente código a 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");
            }
        }
  • Agregue los siguientes cambios al formulario de visualización.
  
<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>

Consulte también