Hola a todos,
Necesito de vuestra ayuda y experiencia. Tengo un PageLayout que tendrá un campo Attachments. Este campo unicamente muestra una cuadro de texto (donde irá la ruta del fichero) y un botón que será el Browse.
Asociamos nuestro Layout a la página que vamos a crear. Nuestro Site es del tipo Module Site (Documents, Images, Pages, Workflows Task). Utilizando el siguiente código C# intentamos realizar un Attachments y relacionar dicho fichero a la página. El fichero a adjuntar fisicamente se crea en la Folder de Destino (en este caso "Attachments"). Sin embargo, realizamos un oCurrentPage.Attachments.AddNow(oFile.Name, oFile.OpenBinary()); oCurrentPage.Update();
Donde: oCurrentePages es un objeto del tipo SPList oPages = oWeb.Lists["Pages"]; para relacionar el fichero adjunto con la página actual.
Y no he podido lograr relacionar el fichero con la página. Cuando hago un
Response.Write("Attachments: " + oCurrentPage.Attachments.Count.ToString()); para ver la cantidad de elementos de la página me muestra 0 (cero).
Por favor, si alguien ha podido realizar este procedimiento le agradeceré mucho su ayuda y colaboración.
Atte.
César
PD: Adjunto código fuente del procedimiento.
/*************************************************************************************************************************************/
//Is the file valid?
if (!uplAttachment.HasFile)
return;
//1. Get the current page.
SPListItem oCurrentPage = GetCurrentPage();
if (oCurrentPage == null)
return;
//2. Get the Attachment folder.
SPWeb oWeb = SPContext.Current.Web;
SPFolder oFolder = oWeb.Folders["Attachments"];
string Filename = Path.GetFileName(uplAttachment.FileName);
Hashtable FileAttributes = new Hashtable();
FileAttributes.Add(
"Title", "TEST");
//3. Upload the file to the Files collection.
SPFile oFile = oFolder.Files.Add(Filename, uplAttachment.FileBytes, FileAttributes, true);
oFolder.Update();
//4. Now add this file to the Attachements collection.
oCurrentPage.File.CheckOut();
oCurrentPage.Attachments.AddNow(oFile.Name, oFile.OpenBinary());
oCurrentPage.Update();
oCurrentPage.File.CheckIn(
"");
oCurrentPage.File.Publish(
"");
//Redirect to the same page so we can see the updates in the page.
Response.Redirect(Request.Url.ToString());
/*************************************************************************************************************************************/