Forms & Views & Site Definitions

23/01/2006 - 21:46 por Rene | Informe spam
Hola a todos,

estoy trabajando con site definitions y en una lista quiero definir dos
vistas diferentes, allitems_reader.aspx y allitems_edit.aspx. Hasta
aquí todo bien. El problema está en que quiero asociar a cada una de
estas vistas un display form diferente, de manera que cuando un usuario
entre en allitems_reader.aspx y le dé a un elemento de la lista se
abra el fichero dispform_reader.aspx. De la misma manera, cuando un
usuario entre en allitems_edit.aspx y quiera ver un elemento de la
lista se le abra el dispform_edit.aspx. Todo esto sin tocar FrontPage,
claro.

He estado investigando en el archivo schema.xml y en la definición de
las vistas hay lo siguiente:

<HTML><![CDATA[;if (ctx.PortalUrl == "") ctx.PortalUrl = null;
ctx.displayFormUrl = ]]></HTML>
<ScriptQuote>
<URL Cmd="DISPLAY" NoID="TRUE"/>
</ScriptQuote>

que he cambiado por:


<HTML><![CDATA[;
if (ctx.PortalUrl == "") ctx.PortalUrl = null; ctx.displayFormUrl "DispForm_edit.aspx" ]]></HTML>

pero este cambio de fichero me lo aplica a todas las vistas, aunque
solo lo defina dentro de una. Alguien sabe la manera de modificar el
formulario de visualización de los elementos de una lista vía site
definitions?

Muchas gracias por cualquier idea.

Saludos,
René

Preguntas similare

Leer las respuestas

#1 csegura
27/01/2006 - 23:42 | Informe spam
Rene,

Tal y como lo has hecho esta bien, solo que si quieres que el cambio solo
sea para una lista en concreto no te queda más remedio que usar frontpage. Yo
generalmente hago estas cosas en el servidor de desarrollo, una vez que he
tocado la lista a mi gusto la guardo como plantilla y la importo en el sitio
de producción.


Carlos Segura Sanz
www.ideseg.com


"Rene" escribió:

Hola a todos,

estoy trabajando con site definitions y en una lista quiero definir dos
vistas diferentes, allitems_reader.aspx y allitems_edit.aspx. Hasta
aquí todo bien. El problema está en que quiero asociar a cada una de
estas vistas un display form diferente, de manera que cuando un usuario
entre en allitems_reader.aspx y le dé a un elemento de la lista se
abra el fichero dispform_reader.aspx. De la misma manera, cuando un
usuario entre en allitems_edit.aspx y quiera ver un elemento de la
lista se le abra el dispform_edit.aspx. Todo esto sin tocar FrontPage,
claro.

He estado investigando en el archivo schema.xml y en la definición de
las vistas hay lo siguiente:

<HTML><![CDATA[;if (ctx.PortalUrl == "") ctx.PortalUrl = null;
ctx.displayFormUrl = ]]></HTML>
<ScriptQuote>
<URL Cmd="DISPLAY" NoID="TRUE"/>
</ScriptQuote>

que he cambiado por:


<HTML><![CDATA[;
if (ctx.PortalUrl == "") ctx.PortalUrl = null; ctx.displayFormUrl > "DispForm_edit.aspx" ]]></HTML>

pero este cambio de fichero me lo aplica a todas las vistas, aunque
solo lo defina dentro de una. Alguien sabe la manera de modificar el
formulario de visualización de los elementos de una lista vía site
definitions?

Muchas gracias por cualquier idea.

Saludos,
René


Respuesta Responder a este mensaje
#2 Rene
31/01/2006 - 10:35 | Informe spam
Hola Carlos,

gracias por tu respuesta y por tus aportaciones en general, que son
siempre muy positivas.

Las modificaciones que intento hacer no son para una lista en concreto,
sino para todas las listas que tengan como template el site definition
que estoy modificando. Lo que quiero hacer es, via site definition,
crearme dos vistas que sean exactamente iguales solo que cuando le des
a visualizar un elemento de la vista se abran páginas diferentes.

Es decir, tener dos vistas, una allitems_reader.aspx y cuando le hagas
click a un elemento de la lista se abra la página dispForm_reader.aspx
en vez de la de por defecto (dispForm.aspx) y tener otra vista
allitems_edit.aspx que al visualizar un elemento de la lista se abra la
página dispForm_edit.aspx. Esto lo he intentado cambiar en el trozo de
código que he dejado en el primer post. Ese trozo de código está
asociado a una vista en el fichero schema.xml de la lista, en cambio
aplica los cambios a todas las vistas de esa lista.

Espero haberme explicado, es un tema un poco complejo.

Saludos,
René
Respuesta Responder a este mensaje
#3 csegura
31/01/2006 - 12:57 | Informe spam
Rene, por el uso de frontpage, supongo que lo que te preocupa es que las
páginas se queden como unghosted; Eso no es un problema.

Tu puedes hacer todas la perrerias que quieras a una lista, dejarla con un
montón de páginas unghosted, pero una vez que guardas la lista como plantilla
y creas una nueva lista basada en la plantilla todas las páginas volverán a
estar ghosted.

Partiendo de este punto si no tienes un servidor de desarrollo, solo tienes
el de producción, lo que puedes hacer es crearte un sitio de pruebas, en
donde trabajarás con la lista.

Crea la lista, añadele los campos que necesites y una vez creada te vas a la
vista de “Todos los elementos”, (allitems.aspx) la editas con frontpage.

Dentro del frontpage, tienes dos pestañas una en la que estas editando
(allitems.aspx) y otra con la estructura del sitio. Usando la estructura del
sitio puedes entrar en la lista y editar las páginas que desees como
editform.aspx y dispform.aspx (yo suelo hacer una copia de las páginas antes
de editarlas) puedes copiar cualquier página de estas y editarla dentro de
frontpage. Como veras si has creado una nueva vista personalizada para la
lista (por ejemplo “MiVista”) tendrás una página llamada MiVista.aspx.

Ahora puedes editar MiVista.aspx y dentro cambiar lo que quieras. Para hacer
lo que tú quieres yo convertiría la vista a una “Vista de datos XSLT” una vez
convertida editas las propiedades del origen de datos, y dentro otra vez en
propiedades y en la pestaña de archivos auxiliares cambiaría la página de
visualización DispForm.aspx por la que tú quieras y lo mismo con la de
edición.

Una vez que lo tengas montado en frontpage, guardas la lista como una
plantilla, la exportas a tu ordenador y la importas en el site de producción.
Luego solo tienes que crear una lista usando la plantilla que has creado.

Espero que esto te sirva, muchas gracias por tus comentarios.

Un Saludo.

Carlos Segura Sanz
www.ideseg.com
Respuesta Responder a este mensaje
#4 csegura
31/01/2006 - 13:21 | Informe spam
Rene, perdona pero si tú quieres distintas páginas para cada vista, una vez
que la has convertido a XSLT cambia el valor de:

ctx.displayFormUrl = "<xsl:value-of select="$URL_DISPLAY"/>”;

por

ctx.displayFormUrl = "<xsl:value-of select="$ListUrlDir"/>/DispForm2.aspx";

Y lo mismo con la de edición.

Ya que si lo cambias como te había comentado antes lo hará para todas las
vistas.

Otro Saludo,


Carlos Segura Sanz
www.ideseg.com


"Rene" escribió:

Hola Carlos,

gracias por tu respuesta y por tus aportaciones en general, que son
siempre muy positivas.

Las modificaciones que intento hacer no son para una lista en concreto,
sino para todas las listas que tengan como template el site definition
que estoy modificando. Lo que quiero hacer es, via site definition,
crearme dos vistas que sean exactamente iguales solo que cuando le des
a visualizar un elemento de la vista se abran páginas diferentes.

Es decir, tener dos vistas, una allitems_reader.aspx y cuando le hagas
click a un elemento de la lista se abra la página dispForm_reader.aspx
en vez de la de por defecto (dispForm.aspx) y tener otra vista
allitems_edit.aspx que al visualizar un elemento de la lista se abra la
página dispForm_edit.aspx. Esto lo he intentado cambiar en el trozo de
código que he dejado en el primer post. Ese trozo de código está
asociado a una vista en el fichero schema.xml de la lista, en cambio
aplica los cambios a todas las vistas de esa lista.

Espero haberme explicado, es un tema un poco complejo.

Saludos,
René


Respuesta Responder a este mensaje
#5 Rene
01/02/2006 - 14:02 | Informe spam
Hola Carlos,

gracias por tu explicación tan detallada. Lo de usar site definitions,
a parte de para que no queden unghosted, es porque la lista se ha de
utilizar en varias áreas diferentes y quiero que si más adelante he
de modificar algún campo o vista (cosa bastante probable), se apliquen
los cambios a todas las listas que he creado (sino sí que podría
utilizar templates).

Al convertir una vista a XSLT, lo que hace FP es cambiarte de un
listviewebpart a un dataviewebpart, con lo que te incluye código XSL
para poder cambiarle el formato (y añadir los campos como has
comentado), pero este código que genera no se puede incluir en la
vista de un site definition (sí en cambio el de un listviewebpart). Lo
que sí que se podría hacer sería un webpart con un objeto
dataviewebpart al que se le inicializasen los métodos a partir del
código que genera FP (xsl, parameterbindings, query, etc.). Lo probé
en otro proyecto y funcionó, pero me parece demasiado complicado para
solo cambiar un link...

No sé si me sigues por donde voy, es un tema bastante específico.

Un saludo,
René
http://www.zulsystems.com
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida