Ejemplo de cuadros de texto

Anuncio
EJEMPLO 1. CUADROS DE TEXTO
En este ejemplo vamos a ver la forma de crear cuadros de texto con los datos de vistas
Para ello disponemos de una vista con los datos de los alumnos.
En el formulario principal vamos a crear un desplegable donde elegiremos el usuario del cual
vamos a sacar los datos en el informe.
Empezamos creando un nuevo elemento “Web Form” llamado ejer1.aspx.
CREAR UN DESPLEGABLE FILTRAR LOS DATOS
En el formulario anterior, arrastramos el componente DropDownList para crear el desplegable.
Esto es necesario para que, al elegir un elemento del desplegable, muestre en el informe los
datos de esa persona. A ese componente, le tendremos que marcar la opción “Habilitar
AutoPostBack” para que recargue la página en cada cambio de selección.
Ahora es el momento de cargar los elementos del desplegable. Esta vez, vamos a cargar los
datos, tanto del desplegable como del informe, mediante objetos SqlDataSources.
Pulsamos sobre la pestañita superior derecha del DropDownList en modo diseño y elegimos
“Elegir origen de datos”.
El nuevo origen de datos va a ser de tipo “Base de datos”.
Creamos una nueva conexión si no la tenemos creada.
Le damos nombre a la nueva conexión.
Elegimos la sentencia que queremos ejecutar. En nuestro caso seleccionaremos que nos saque
todos los datos de alumnos que hay en la vista VREPORT_DATOSALU ordenados por nombre.
Y, finalmente, los campos de texto y valor del desplegable.
REPORTVIEWER
A continuación del desplegable, arrastraremos un nuevo componente ReportViewer con su
ScriptManager que será donde mostremos los datos.
Seleccionando sobre el objeto ReportViewer y viendo sus propiedades, cambiamos la llamada
“SizeToReportContent” a True. Esto hará que el ReportViewer se ajuste al tamaño que tenga el
informe.
INFORME
Ahora es el momento de crear el informe. Pulsamos con el botón derecho en el proyecto y
agregamos un nuevo elemento de tipo informe.
Lo primero que debemos hacer con el informe es crear el nuevo conjunto de datos. Para ello,
seleccionamos “nuevo/conjunto de datos…”. Como “origen de datos” seleccionamos el botón
nuevo y, dentro de él, escogemos la cadena de conexión creada anteriormente.
Y seleccionamos la vista VREPORT_DATOSALU.
ENLAZAR REPORT CON EL INFORME
Ahora es el momento de informar al ReportViewer de que datos va a pasarle al informe.
Al elegir el informe deseado, vemos que ya se nos crea un ObjectDataSource. Este objeto ha
sido creado automáticamente cuando le hemos asignado al informe un origen de datos. El
objeto hace uso del fichero xsd creado automáticamente en app_code.
Podríamos crear este objeto y crear un nuevo SqlDataSource como hemos hecho con el
desplegable, pero para ver todas las posibilidades vamos a utilizar este nuevo objeto.
Si probásemos el formulario ya nos devolvería resultados, pero al informe le llegarían todos los
datos sin filtrar.
Para ello, primero deberemos de cambiar la función del fichero xsd para que recoja un
parámetro y nos filtre los datos. Abriendo el fichero DataSet.xsd y seleccionando el método
GetData, nos aparecerán las propiedades de esa función. Pulsando sobre el valor de
“CommandText” vamos a cambiar su valor.
Agregamos un filtro en NIF llamado “:pNIF”. Podremos probar el resultado ejecutando la
consulta.
Ahora, para hacer que el método filtre el valor del desplegable, deberíamos ir a las
propiedades del objeto y pulsar sobre “SelectParameters”.
Agregamos un nuevo parámetro con nombre “pNIF” y que recoja los datos del DropDownList.
Los datos ya son filtrados, pero nuestro problema ahora es que el ReportViewer no refresca los
datos. Para ello solo es necesario colocar el siguiente código en el evento SelectedChanged del
DropDownList.
ReportViewer1.LocalReport.Refresh();
La sentencia hará que el ReportViewer se recargue cada vez que seleccionemos un elemento
del desplegable.
CUADROS DE TEXTO
En este ejemplo, solamente vamos a utilizar cuadros de texto, para ver la multitud de opciones
que posee.
El cuadro de texto es uno de los elementos más útiles que poseen los informes. Para utilizarlo,
solamente tendremos que ir arrastrando el elemento a la zona de trabajo.
TEXTO ESTÁTICO
Para escribir cualquier texto estático, arrastraremos un elemento campo de texto y, haciendo
doble Click sobre él, escribiremos el texto que deseamos que tenga.
A este cuadro de texto podremos darle el tamaño que queremos que tenga arrastrando los
ejes del mismo desde el menú de propiedades. En este menú podremos asignarle el formato
que queremos que tenga.
TEXTO DINÁMICO
Para agregar texto dinámico tendremos dos posibilidades:
-
Arrastrando uno de los datos del origen de datos sobre el informe, se creará un cuadro
de texto con la expresión necesaria para mostrar el dato.
-
Arrastrando uno de los datos de origen sobre un cuadro de texto.
TEXTO ESTATICO Y TEXTO DINÁMICO
Al arrastrar un cuadro de texto y escribir texto estático, podremos arrastrar un elemento del
origen de datos entre el texto y, de esa forma, el texto se adaptará al valor del dato.
EXPRESIONES
Para escribir una expresión o función en un cuadro de texto, tendremos que pulsar con el
botón derecho sobre el cuadro y seleccionar “Expresión…”.
Aquí podremos escribir multitud de expresiones ayudados por su asistente.
Como ejemplo vamos a crear una expresión para que el cuadro de texto muestre el nombre y
el apellido separados por un espacio.
Si seleccionamos conjunto de datos, veremos todos los datos disponibles, y pulsando doble
Click en el deseado, se nos colocará en el valor de la expresión.
Para concatenar, en “Operadores/Concatenación”, veremos que existen dos posibilidades, las
cuales son idénticas para cadenas.
Completando la expresión quedará de la siguiente forma:
Este tipo de expresión no tienen mucho sentido porque se puede hacer lo mismo arrastrando
los elementos. Vamos a ver un ejemplo en el que tenga sentido.
Tenemos el siguiente cuadro de texto y deseamos que, si el usuario no tiene valor en la base
de datos, no se escriba el texto “APELLIDO2”.
La expresión resultante quedará de la siguiente forma:
¿Qué pasaría ahora si quisiéramos poner en negrita el valor de los datos?
No podríamos seleccionar el texto deseado y darle formato porque en el cuadro de texto
aparece “<<expr>>”.
Existe la posibilidad de escribir el valor del cuadro de texto en HTML. Para ello debemos de
seleccionar sobre la expresión y, posteriormente, volver a pulsar encima.
Al hacerlo, aparecerá la propiedad “MarkupType”, la cual pondremos a HTML. Al hacer esto
tendremos que modificar la expresión de la siguiente forma:
NOTA: Los retorno de carro podríamos dejarlos como “Chr(10)”.
PASO DE PARÁMETROS
Hay veces que necesitamos pasar parámetros al informe que no vienen dados desde base de
datos. Por esa razón existe la posibilidad de crear Parámetros de entrada.
Para ello iremos al menú de “Datos de informe” y elegiremos “Nuevo/Parámetro”.
Al crear el parámetro podremos elegir el nombre y el tipo de dato, así como los valores
disponibles y predeterminados.
En nuestro ejemplo le daremos el nombre “Parametro1” de tipo texto y dejaremos el resto por
defecto.
El nuevo parámetro se nos creará en el informe como un dato más, y podremos hacer con él lo
mismo que con los datos del DataSet (arrastrar al informe, utilizarlo en las expresiones,…).
Para pasar el parámetro desde el ReportViewer tendremos que utilizar código. En el método
de SelectedChanged del desplegable utilizaremos las siguientes instrucciones:
//Será el valor del parámetro (podemos pasar lo que queramos)
int valor = DropDownList1.SelectedIndex + 1;
//Array que contendrá los parámetros
ReportParameter[] parameters = new ReportParameter[1];
//Establecemos el valor de los parámetros
parameters[0] = new ReportParameter("Parametro1", valor.ToString());
//Pasamos el array de los parámetros al ReportViewer
ReportViewer1.LocalReport.SetParameters(parameters);
//Refrescamos el ReportViewer
ReportViewer1.LocalReport.Refresh();
Para probarlo vamos a arrastrar el parámetro al informe y ver su valor.
Podemos apreciar que la primera vez que lanzamos la página el informe no se crea. Esto es
debido a que la primera vez no estamos pasando ningún parámetro.
Para corregir este error tendremos que poner también el anterior código en un evento del
DropDownList que se ejecute después de haber cargado sus datos, como por ejemplo el
evento DataBound.
OCULTAR ELEMENTOS
Tal como hemos hecho anteriormente con una parte de un cuadro de texto, vamos a hacer
que un elemento (cuadro de texto, imagen,…) se oculte para unos usuarios y se muestre para
otros. Vamos a hacerlo mediante el valor del parámetro.
Si el parámetro vale 1 mostraremos un cuadro de texto que pondrá “Eres el primero de la
lista”, si el parámetro vale 4 mostraremos otro cuadro diferente que ponga “Eres el último de
la lista” y, para los otros dos casos, mostraremos una imagen.
Creamos los dos cuadros. Se podría hacer con uno y utilizar expresiones, pero vamos a
aprender a ocultar los cuadros de texto de otra forma diferente.
Ahora, arrastramos la imagen y la importamos el informe. Más adelante, en otro ejemplo,
veremos todo lo que nos permite este elemento.
Pulsando con el botón derecho sobre la imagen y seleccionando la pestaña “Visibilidad”,
tenemos la posibilidad de mostrar u ocultar en función de una expresión. Para este ejemplo
utilizaremos la expresión:
Para los cuadros haremos lo mismo pero modificando la expresión:
HACER QUE LOS CUADROS DE TEXTO NO CAMBIEN DE TAMAÑO
Hay veces que necesitamos mantener los cuadros de texto fijos y, que su tamaño no varíe en
función del valor de las variables de su interior.
Esto puede ocasionar más de un quebradero de cabeza, ya que en informes donde se necesita
un cierto diseño, puede ocasionar desplazamientos inoportunos.
Para ello utilizaremos dos características de los cuadros de texto:
-“CanGrow”: Indica si el elemento del informe aumenta automáticamente de tamaño para
alojar un valor largo.
-“CanShrink”: Indica si el elemento del informe disminuye automáticamente de tamaño para
alojar un valor corto.
Descargar