Buscar en este blog

lunes, 27 de abril de 2015

Crear FileUpdate en Enterprise Portal de Dynamics Ax 2012


Para crear un control donde se puedan cargar archivos mediante el enterprise portal de dynamics ax 2012, lo primero es modificar el control de usuario en asp. Lo importante aquí es que nuestro control FileUpdate debe estar dentro de un UpdatePanel, si no se pone así, no podemos leer el nombre del archivo.
Image(86)

<asp: UpdatePanel ID ="DocuAddUpdatePanel" runat ="server">
   <ContentTemplate>
     <asp: Label runat ="server" id ="StatusLabel" text="Archivo UUID: " />
     <asp: FileUpload ID ="FileUploadControl" runat="server" />
     <asp: Button runat ="server" id="UploadButton" text="Carga" onclick="UploadButton_Click"/>
     </ContentTemplate>
   <Triggers>
     <asp: PostBackTrigger ControlID="UploadButton" />
   </Triggers>

</asp: UpdatePanel>


El código del control en C# para el método del click del botón, que para este caso se llama UploadButton_Click

protected void UploadButton_Click(object sender, EventArgs e)
    {
        if (FileUploadControl.HasFile)
        {
            //Leemos el nombre del archivo, por seguridad solo se puede leer el nombre, no la ruta del cliente
            string filename = Path .GetFileName(FileUploadControl.FileName);

            //Guardamos el archivo en la ruta C:\TEMP
            FileUploadControl.SaveAs( @"C:\TEMP\" + filename);
            string filenameCompleto = @"C:\TEMP\" + filename;

            //Llamamos el método en Ax dentro de nuestro dataset
            this.ds_EPVendInvoiceInfo.GetDataSet().DataSetRun.AxaptaObjectAdapter.Call("grwCargaFileNameUUID", filenameCompleto);
        }

    }

Finalmente, dentro de ax, el método creado para el tratamiento del archivo, solo guarda la ruta donde se cargo para usarlo posteriormente para otros procesos.

public void grwCargaFileNameUUID(Filename  _fileName = "")
{
    GRWTestUUIDFromEP   gRWTestUUIDFromEP;

    try
    {
        if (_fileName)
        {
            gRWTestUUIDFromEP.NombreArchivo = _fileName;
            gRWTestUUIDFromEP.insert();
        }
        else
        {
            gRWTestUUIDFromEP.NombreArchivo = "Se invoco pero no se recibio nombre" ;
            gRWTestUUIDFromEP.insert();
        }
    }
    catch
    {
      info( "error en metodo dataset");
    }

}

Y en la tabla se guardaría la ruta completa:

Image(87)

Con este código solo se selecciona un archivo, no múltiples archivos, además de que si en algún momento se selecciona dos veces el mismo archivo, en la ruta del servidor donde se carga, se sobreescribe sin previa confirmación del usuario.


<<<<<  Crear un campo edit en un control de usuario


Post relacionados:
Modificar un control de usuario en el Enterprise Portal
Crear control de usuario en Enterprise Portal
Crear DataSet
Crear ListPage con PartPreview Pane en EP   
Implementar List Page en EP 
Crear Cues en Enterprise Portal   



Y por cierto, acuérdate de darle click a algún anuncio si el post te sirvió de algo.


No olvides que te puedes unir a la página en Facebook Aprendiendo Dynamics Ax donde únicamente se tratan temas de desarrollo y se busca crear una comunidad de desarrollador@s de Ax en nuestro idioma.







No hay comentarios.:

Publicar un comentario