Sharepoint 2010 – Aprobación de workflows para dispositivos móviles – Parte 4: Código Javascript en la página de webparts de Sharepoint

Para completar el ciclo, es necesario crear la página de webparts, agregar un CEW y colocar ahí el código JavaScript necesario para hacer el llamado al servicio web de actualización de items de la biblioteca de documentos.


En específico el CEW debe contener el siguiente código:


<script src=”/Scripts/jquery.min.js” type=”text/javascript”></script>
<script type=”text/javascript”>


function gup( 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];
}


function ActualizaEmbarque()
{
var IDFormulario=gup(‘IDForm’);
var Estado=gup(‘Estado’);
var Gerente=gup(‘Gerente’);


if (Estado==’1′)
{
   Estado=”APROBADO”;
}
else if (Estado==’2′)
{
   Estado=”NO APROBADO”;
}



if (Gerente==’1′)
{
   Gerente=”AprobacionGerente1″;
}
else if (Gerente==’2′)
{
   Gerente=”AprobacionGerente2″;
}


var soapEnv = “<?xml version=\’1.0\’ encoding=\’utf-8\’?> \
<soap:Envelope xmlns:xsi=\’http://www.w3.org/2001/XMLSchema-instance\’ \
xmlns:xsd=\’http://www.w3.org/2001/XMLSchema\’ \
xmlns:soap=’http://schemas.xmlsoap.org/soap/envelope/\’> \
<soap:Body> \
<UpdateListItems xmlns=’http://schemas.microsoft.com/sharepoint/soap/’> \
<listName>Control de Embarques de Chatarra</listName> \
<updates> \
<Batch OnError=’Continue’> \
<Method ID=’1′ Cmd=’Update’> \
<Field Name=’ID’>”+IDFormulario+”</Field> \
<Field Name='”+Gerente+”‘>”+Estado+”</Field> \
</Method> \
</Batch> \
</updates> \
</UpdateListItems> \
</soap:Body> \
</soap:Envelope>”;
$.ajax({
url: “/_vti_bin/lists.asmx”,
beforeSend: function(xhr) { xhr.setRequestHeader(“SOAPAction”, “http://schemas.microsoft.com/sharepoint/soap/UpdateListItems“);
},
type: “POST”,
dataType: “xml”,
data: soapEnv,
complete: UpdateListItems,
contentType: “text/xml; charset=\”utf-8\””
});
}


function UpdateListItems(xData, status)
{
alert(“Aprobación: ” + status );
}


ActualizaEmbarque();
</script>


El archivo jquery.min.js lo pueden obtener de este sitio http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js.


La parte medular de este código es:


<UpdateListItems xmlns=’http://schemas.microsoft.com/sharepoint/soap/’> \
<listName>Control de Embarques de Chatarra</listName> \
<updates> \
<Batch OnError=’Continue’> \
<Method ID=’1′ Cmd=’Update’> \
<Field Name=’ID’>”+IDFormulario+”</Field> \
<Field Name='”+Gerente+”‘>”+Estado+”</Field> \
</Method> \
</Batch> \
</updates> \
</UpdateListItems> \


Este código es el que construye el cuerpo de la actualización del item utilizando el servicio web de SharePoint.


<listName>Control de Embarques de Chatarra</listName>: hace referencia al nombre de la lista en donde se harán las actualizaciones.


<Method ID=’1′ Cmd=’Update’> \: como es posible enviar varias actualizaciones en un mismo paso, aquí indicamos que existe uno solo (ID=’1′) y que sera de una operación de actualizacipón (Cmd=’Update’).


<Field Name=’ID’>”+IDFormulario+”</Field> \: utilizando el parámetro enviado en el URL, indicamos cual es el ID del item que vamos a actualizar.


<Field Name='”+Gerente+”‘>”+Estado+”</Field> \: aquí indicamos el campo del item que vamos a actualizar y el valor respectivo. Es importante mencionar que si el nombre del campo posee espacios en blanco debe ir en el formato: “Nombre_x0020_Campo”, la cadena “_x0020_” representa a un espacio en blanco.


ACTUALIZACIÓN: para visualizar el nombre de campo que se debe colocar en el XML Field Name se recomienda ingresar a la configuración de la lista y hacer clic en el campo, revisar en el URL el parámetro Field. Esto es de utilidad en el caso de que el campo contenga tildes o sea demasiado largo, por ejemplo Field=Aprobaci%5Fx00f3%5Fn%5Fx0020%5FAprobador. es necesario reemplazar %5F por un _, para este caso _x00f3_ representa a una ó.


Si se requiere actualizar más campos simplemente se deben agregar más secciones del tipo <Field Name='”+Gerente+”‘>”+Estado+”</Field> \.


 


Espero que esta serie de posts sean de su utilidad.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>