domingo, 21 de agosto de 2016

Recoger parámetro de la URL con Jquery y completar un campo de tipo búsqueda de SharePoint

 Siguiendo con la entrada anterior quedaría recoger el número de ID correspondiente al libro y dejarlo seleccionado en un campo de tipo búsqueda de la lista reserva de libros. Dicho campo, será un campo de búsqueda sobre la lista de libros, cogiendo como clave el nombre del libro.

Para ello tendremos una dirección del tipo:

https://URLdelSitio/Lists/ReservaLibro/Nuevo.aspx?Libro=1&Source=/URLdelSitioalquevolvertrasaceptar/

Este sería el libro con el ID=1 en la lista de libros.

Para ello, en formulario de nuevo elemento de la lista reserva de libros, debería añadir un editor de código fuente con el siguiente código:

<script>

$(document).ready(function(){

var direccion = window.location.href;

var numero = direccion.split('Libro=')[1];

                 numero = numero.split('&Source')[0];

$("[title='Libro'] option[value="+numero+"]").prop('selected', true);

$('#Book option:not(:selected)').attr('disabled',true);

});

</script>

Habiendo añadido el ID=Book al tr del campo de busqueda, en mi caso:

<td width="400px" valign="top" class="ms-formbody" id="Book">

<SharePoint:FormField runat="server" id="ff3{$Pos}" ControlMode="New" FieldName="Libro" __designer:bind="{ddwrt:DataBind('i',concat('ff3',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Libro')}"/>

<SharePoint:FieldDescription runat="server" id="ff3description{$Pos}" FieldName="Libro" ControlMode="New"/>

</td>

El código JavaScript de arriba lo que hace es:

  1. Recoger la URL en la variable dirección
  2. Quedarnos con la parte tras la palabra 'Libro=' en la variable numero
  3. En esa misma variable, eliminamos la parte del redireccionamiento
  4. Buscamos el campo de tipo búsqueda, que en mi caso se llama Libro y seleccionamos el valor que hemos recogido de la URL en la variable numero
  5. Por último, deshabilitamos el resto de opciones diferentes a la que hemos pasado como parámetro del Libro.
Está última parte, fue para la cual tuve que buscar en Google, ya que si hacía que el campo estuviera en disable no me guardaba el valor correcto y al ser un campo de elección no tenía sentido ponerlo en readonly.
Encontré esta entrada, que me dio la solución:



No hay comentarios:

Publicar un comentario