Para conseguirlo he decidido añadir unas funciones en JavaScript.
Aquí la receta para conseguirlo:
1. Abrir en el Sharepoint Designer la página EditForm.aspx
2. Busca el ContentPlaceHolder Main
3. Comenzamos nuestro script:
script type="text/javascript"
4. Ahora hay que modificar el OnLoad de la página para poder añadir nuevos eventos. El parámetro SetEvent es la función que definirá los eventos.
_spBodyOnLoadFunctionNames.push("SetEvent");
5. Creamos la función que se ejecutará cuando se cargue nuestra página. Gracias a la funcion getTagFromIdentifierAndTitle obtendremos la referencia al objeto que queremos añadir un control de evento. El primer parámetro el tipo, el segundo el identificador y el tercero el title del campo. Para mas información consultar la web del creador de la función.
La función que aparece en el delegado es la que queremos que se ejecute cuando se dispare el evento.
function SetEvent(){
getTagFromIdentifierAndTitle ("select","","Invited").onchange= function() {SetValues()};
getTagFromIdentifierAndTitle ("select","","Selected").onchange= function() {SetValues()};
getTagFromIdentifierAndTitle ("select","","Elegibility").onchange= function() {SetValues()};
getTagFromIdentifierAndTitle ("select","","Essential criteria").onchange= function() {SetValues()};
}
6. Definir las acciones a ejecutar cuando se dispare el evento. En este caso cambiaremos el valor de un campo de tipo Choice dependiendo de los valores de otros cuatro campos de tipo Choice también.
function SetValues() {
var tTestEvent = getTagFromIdentifierAndTitle ("input","","TestEvent");
var status = getTagFromIdentifierAndTitle ("select","","Status");
if (!(getTagFromIdentifierAndTitle ("select","","Invited").value == "Yes" &&
getTagFromIdentifierAndTitle ("select","","Selected").value == "Yes"&&
getTagFromIdentifierAndTitle ("select","","Elegibility").value == "Yes"&&
getTagFromIdentifierAndTitle ("select","","Essential criteria").value == "Yes"))
status.value = "Non Selected";
else
status.value = "Accepted"; }
7. Por último la función que hemos usado para obtener la referencia a un objeto. Vayan las gracias al autor.
function getTagFromIdentifierAndTitle(tagName, identifier, title) {
var len = identifier.length;
var tags = document.getElementsByTagName(tagName);
for (var i=0; i <> var tempString = tags[i].id;
//if you are not sure what the actual title of your field is, uncomment this alert
//alert(tags[i].title);
if (tags[i].title == title && (identifier == "" || tempString.indexOf(identifier) == tempString.length - len)) {
return tags[i];
}
}
return null;
}
Ahora ya podemos cerrar nuestro script, grabarlo y probar a editar los elementos de la lista para ver si funciona bien.