Cuando creamos un nuevo elemento (NewForm.aspx) en las listas por defecto sharepoint nos redirecciona al Source, es decir la pagina que nos envió al NewForm.aspx, pero no podemos ir a la pagina de Display o Edit del elemento que acabamos de Rellenar.
Objetivo:
Insertar un nuevo elemento y saltar a la pagina de edicion del mismo.
Estrategia:
Tras insertar el nuevo elemento, este recibe un ID asignado por sharepoint, ID que desconocemos y no podemos calcular (Sobre todo para entornos con muchos usuarios).
Como siempre lo más sencillo es lo mejor, vamos a crear una pagina de salto que obtenga el ultimo elemento que acabamos de insertar.
Ingredientes:
Una pagina ASPX que creemos nueva y la llamamos RedirectToNew.aspx , junto a la newForm.aspx de la lista sharepoint.
Un dataview web part conectado con un datasource a la lista en cuestion.
Un parámetro que recoge el Logon_USER de las Server variables
Un trocito de javascript
Receta:
Para hacer esto nos basta con ordenar descendentemente por Id y limitar la lista a un elemento, sin olvidar filtrar por usuario no sea que nos salte a otro elemento que acabe de crear un compañero.

Vamos a construir un javascript con parámetros que se ejecute al cargar la pagina y nos redireccione al Editform.asxp o al DispForm.aspx del nuevo elemento que acaba de crear.
Truco:
Yo suelo dejar la pagina en blanco al completo, o pongo una animación de cargando y ni se nota.
Más trucos:
A la gente le gusta hacer workflows pero yo si puedo los evito, sobre todo si son muy simples.
Podemos usar esta página de salto para hacer recálculos, ajustar totales de otra lista que necesite refrescarse, o redireccionar a otro lugar que necesitemos cuando se cumpla una condición
Para filtrar por usuario usamos un parameter, hay otras formas de hacer esto pero yo prefiero convertir todo a mayúsculas (con el translate) para evitar problemas.
<xsl:variable name="lcletters">abcdefghijklmnopqrstuvwxyz</xsl:variable>
<xsl:variable name="ucletters">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable>
<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[translate(@Propietario,$lcletters,$ucletters) = translate($UID,$lcletters,$ucletters)]"/>
Para redireccionar a la página de Display arrastramos el Elemento "ID" (saldrá un xsl:value-Of) del dataSoruce y lo reemplazamos por este javascript :
<script language="javascript" type="text/javascript">
document.location.href='DispForm.aspx?ID='+ <xsl:value-of select="@ID" />;
</script>
Si quieres redireccionar al Edit puedes hacerlo reemplazando DispForm.aspx por EditForm.aspx
Por ultimo solo hay que tocar el boton del NewForm.aspx poniendo en lugar de "redirect to source", que redireccione a la pagina de salto de esta forma.
<input type="button" value="Aceptar" name="btnSave" onclick="{ddwrt:GenFireServerEvent('__commit;__redirect={RedirectToNew.aspx}')}" />
Espero que resulte de utilidad.
RobertoMarcos.com