Blog de P@blo - Sharepoint Server

Recent Posts

Tags

News



  • Locations of visitors to this page
    En poco incluiré algunos posts sobre workflow con Microsoft Office Sharepoint Server 2007 ó Windows Sharepoint Services v3.
    Ahora le toco el turno a la integración de Exchange Server 2007 con una central IP-PBX, encontré una muy buena que puede ser configurada a nivel de software: http://www.3cx.com/, pruébenla...!!!
    Probando Office Communications Server (OCS) 2007, más allá de probar la mensajería instantánea tradicional, la característica de Web Conference era muy esperada desde la desaparición de su similar con Exchange Conference Server 2000. Más información http://office.microsoft.com/en-us/communicationsserver/default.aspx

Community

Email Notifications

Recursos Técnicos

Herramientas

Blogs destacados

Archives

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 Comment

(required) 

(required) 

(optional)
 

(required) 

If you can't read this number refresh your screen
Enter the numbers above: