Las PDPs nos permiten capturar información que se almacenan en campos personalizados de Project Server. Sin embargo, un requerimiento muy común es que se necesiten cargar datos repetitivos asociados a un proyecto, como por ejemplo:
- Productos afectados
- Lista de stakeholders
- Documentos
- Etc…
Es por ello que estuve trabajando en una alternativa que no utilize InfoPath. Descarté también el uso de Client Object Model para armar una pantalla de alta, principalmente porque me obligaría a cambiar ese desarrollo cada vez que se haga un cambio en las columnas de las litas
El enfoque propuesto
- Usar las pantallas estándar de SharePoint.
- Alta
- Crear un link para llamar a la pantalla de alta en forma modal
- Pasarle como parámetro el ID del proyecto
- Completar el campo de ID con el dato recibido en la URL
- Ocultar el campo
- Refrescar la pantalla en caso de alta
- Modificación / Baja
- Usar la pantalla de Display para arrancar estas operaciones. Porque si se arranca del Edit, al eliminar el registro, no se vuelve a la PDP original
- Código para ocultar la clave del maestro
- Código
- Formado por cuatro CEWP, una para la PDP y las otras tres para las pantallas dispForm, EditForm y NewForm
A continuación, trasncribo el código utilizado:
<script src="/PWA/Internal/jquery-1.4.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$("td:contains('There are no items to show in this view of the'):last").empty();
function Callback (result, target) {
if (result == SP.UI.DialogResult.OK) {
window.location.reload();
}
}
function AbrirVentanaModal( pUrl ) {
SP.UI.ModalDialog.showModalDialog(
{
url: pUrl,
//width: 700,
//height: 600,
dialogReturnValueCallback: Callback
//title: pTitulo
}
);
}
function url_param ( name ){
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return results[1];
}
</script>
<table><tr><td class="ms-addnew" style="padding-bottom: 3px"><span style="height:10px;width:10px;position:relative;display:inline-block;overflow:hidden;" class="s4-clust"><img src="/_layouts/images/fgimg.png" alt="" style="left:-0px !important;top:-128px !important;position:absolute;" /></span> <a class="ms-addnew" id="NewFinancialData" href="javascript: var PU=url_param('projuid'); AbrirVentanaModal('/PWA/Lists/Financial%20Data/NewForm.aspx?ProjUid='+PU)" target="_self">Add financial data</a></td></tr><tr><td><img src="/_layouts/images/blank.gif" width="1" height="5" alt="" /></td></tr></table>
El código para NewForm.aspx
<script src="/PWA/Internal/jquery-1.4.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
// Esto lo hago porque el Editar estándar desde la PDP vuelve a cualquier lado luego de eliminar, incluso cambiando el source
$('input[title="Title"]').attr("value","Edit");
$('input[title="Title"]').parent().parent().parent().css("display","none");
// Cargo el dato de clave del Maestro
PU = url_param ('ProjUid');
$('input[title="ProjUID"]').attr("value",PU);
$('input[title="ProjUID"]').parent().parent().parent().css("display","none");
function url_param ( name ){
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return results[1];
}
</script>
El código para EditForm.aspx
<script src="/PWA/Internal/jquery-1.4.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$('input[title="Title"]').parent().parent().parent().css("display","none");
$('input[title="ProjUID"]').parent().parent().parent().css("display","none");
</script>
El código para DispForm.aspx
<script src="/PWA/Internal/jquery-1.4.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$('a[name="SPBookmark_Title"]').parent().parent().parent().css("display","none");
$('a[name="SPBookmark_ProjUID"]').parent().parent().parent().css("display","none");
</script>
Enlaces relacionados
- http://blogbaris.blogspot.com/2012/09/open-sharepoint-2010-display-edit-new.html
- http://msdn.microsoft.com/en-us/library/ff410058.aspx
- http://saifalmaluk.wordpress.com/tag/sp-ui-modaldialog/
- http://www.spdeveloper.co.in/articles/pages/using-sharepoint-2010-modal-dialogs.aspx
Hasta la próxima!
0 comentarios:
Publicar un comentario