none
Pasar QueryString entre páginas de Sharepoint RRS feed

  • Pregunta

  • Hola de nuevo a toda la comunidad,

    He realizado un custom action sobre una biblioteca de documentos, la cual redirige a una página de sharepoint que contiene un webpart hecho en .NET, el caso es que quiero que al pinchar esa custom action del documento rediriga a esa página con una serie de parámetros en el QueryString de la página, que serían el usuario y el path del documento. El caso es que no se como pasarle los parámetros, se que hay que ponerlos entre llaves {},para el nombre de usuario he probado UserName, User, Usuario...pero nada, y para el Path del fichero he probado FilePath, Path, File, Directory...y nada tampoco.

    ¿Alguien sabe como puedo realizar este paso de parámetros para luego recogerlo en el webpart de .NET?

    Si no se puede hacer mediante QueryString, puede que se pueda hacer de otra forma, estoy abierto a otras posibilidades, pero me parecia más comodo hacerlo mediante QueryString.

    Muchas gracias y un saludo

    jueves, 30 de septiembre de 2010 15:29

Respuestas

  • Si estás con 2010 si, puedes añadir la carpeta del Template de _layouts y añadir una página aspx de aplicación, con esta puedes realizar todo este proceso de querystring y demás sin problemas. Con 2007 era un poco más complejo por las herramientas de desarrollo.

    Te dejo también un código de ejemplo del SPContext y el load de una página

          base.OnLoad(e);
    
          String ListId = Request.QueryString["ListId"];
          String ItemId = Request.QueryString["ItemId"];
    
          SPList list = SPContext.Current.Web.Lists[new Guid(ListId)];
    
          SPListItem item = list.GetItemById(Convert.ToInt32(ItemId));
    
          String url = SPContext.Current.Web.Url + "/Lists/Abandono%20Cuenta/NewForm.aspx?Cliente=" + item["Cliente"].ToString() + "&Oficina=" + item["Oficina"].ToString() + "&List=" + ListId;
    
          Response.Redirect(url, true);
    
    

     

     


    Alberto Diaz Martin twitter://@adiazcan | http://geeks.ms/blogs/adiazmartin
    lunes, 4 de octubre de 2010 8:43

Todas las respuestas

  • Hola Sergio,

    ¿Por que le pasas los parámetros a un WebPart? No estoy seguro que el Webpart pueda recoger esos parámetros en la carga de la página. No sería mejor, subir un página con code-behind que se encargue de recoger esos parámetros y hacer lo que necesites con ellos?

     


    Alberto Diaz Martin twitter://@adiazcan | http://geeks.ms/blogs/adiazmartin
    lunes, 4 de octubre de 2010 7:51
  • Hola Alberto,

    Gracias por responder, ¿tu me estas diciendo que en vez de subir un WebPart con un .ascx, suba directamente una página aspx?

    Yo creo que aunque suba una página el problema va a ser el mismo,¿no?

    Igual soy un poco ignorante, pero no se que diferencia hay en subir un .ascx o una página .aspx entera para resolver esto, ya que en el code-behind de las dos se puede hacer lo mismo...

    ¿Puedes explicarte más?

    Muchas gracias y un saludo.


    Sergio Gallego
    lunes, 4 de octubre de 2010 7:58
  • Te explico un poco que es lo que hemos desarrollado nosotros y como.

    - Creamos un custom action que llame a una página .aspx (con ensamblado en la gac) que recibe por parámetro el ID del item y el ID de la lista.

    - En el page_load de la página, recibimos los parámetros con Request.QueryString["ListId"] y utilizamos el SPContext para realizar operaciones con ese elemento

     


    Alberto Diaz Martin twitter://@adiazcan | http://geeks.ms/blogs/adiazmartin
    lunes, 4 de octubre de 2010 8:03
  • Eso es más o menos lo que yo quiero hacer, en mi caso he llamado a una página .aspx creada en sharepoint, la cual contiene el webpart con el control .ascx hecho en .net.

    Lo que no entiendo en tu solución es lo del ensamblado en la gac, por lo que he leido es el caché de ensamblados global y que sirve para que este disponible en todas las aplicaciones instaladas en el equipo.

    Me interesa bastante tu solución, pero me faltan dos matices en los que tengo dudas para llevarla a cabo:

    Uno de ellos es el que te he comentado, del ensamblado en la gac, no sé muy bien para qué sirve y cómo hacerlo.

    El otro es el uso del SPContext, ya que he programado algún evento de listas, por ejemplo para que no se puedan meter documentos en una lista que no sean pdf, y con el objeto SPItemEventProperties que está en los parámetros de los eventos tengo acceso a toda la lista y sus elementos. Con el SPContext no sé muy bien como puedo acceder a los elementos y a la lista en sí, pero en eso puedo darle una vuelta.

    Un saludo y muchas gracias por tu ayuda.


    Sergio Gallego
    lunes, 4 de octubre de 2010 8:28
  • Tenemos una Feature, con una página aspx que hereda de una clase que se encuentra en el ensamblado de la Feature. Esta se instala en el GAC, cuando haces el deploy en el servidor.

    ¿estás con 2010 o 2007?

    El SPContext es el contexto de ejecución del servidor, con este puedes obtener un objeto SPWeb para acceder al Site y a las listas.

     


    Alberto Diaz Martin twitter://@adiazcan | http://geeks.ms/blogs/adiazmartin
    lunes, 4 de octubre de 2010 8:31
  • Estoy en 2010 Foundation, pero lo que me dices, ¿se hace automaticamente cuando haces el deploy?

    Me he perdido un poco en la herencia de la clase que se encuentra en el ensamblado de la feature, sé lo que es la herencia y como funciona, intuyo que al hacer el deploy se instala en el GAC de forma automática, pero no llego a esa clase de la que heredas (y para que sirve esa herencia, supongo que luego utilizaras las propiedades)

    Lo del SPContext ya lo tengo más claro, simplemente hay que hacer referencia en .NET y con eso tengo acceso.

    Gracias de nuevo


    Sergio Gallego
    lunes, 4 de octubre de 2010 8:39
  • Si estás con 2010 si, puedes añadir la carpeta del Template de _layouts y añadir una página aspx de aplicación, con esta puedes realizar todo este proceso de querystring y demás sin problemas. Con 2007 era un poco más complejo por las herramientas de desarrollo.

    Te dejo también un código de ejemplo del SPContext y el load de una página

          base.OnLoad(e);
    
          String ListId = Request.QueryString["ListId"];
          String ItemId = Request.QueryString["ItemId"];
    
          SPList list = SPContext.Current.Web.Lists[new Guid(ListId)];
    
          SPListItem item = list.GetItemById(Convert.ToInt32(ItemId));
    
          String url = SPContext.Current.Web.Url + "/Lists/Abandono%20Cuenta/NewForm.aspx?Cliente=" + item["Cliente"].ToString() + "&Oficina=" + item["Oficina"].ToString() + "&List=" + ListId;
    
          Response.Redirect(url, true);
    
    

     

     


    Alberto Diaz Martin twitter://@adiazcan | http://geeks.ms/blogs/adiazmartin
    lunes, 4 de octubre de 2010 8:43
  • Hola de nuevo Alberto,

    Muchas gracias otra vez por tu ayuda, creo que con esto que me acabas de decir me va a valer, voy a probar a ver si me funciona y te cuento.

    Un saludo.


    Sergio Gallego
    lunes, 4 de octubre de 2010 8:51
  • Genial, cualquier otra cosa ya sabes donde estamos.
    Alberto Diaz Martin twitter://@adiazcan | http://geeks.ms/blogs/adiazmartin
    lunes, 4 de octubre de 2010 8:52