En la sección anterior, completamos el uso de DataGrid para mostrar toda la información del producto. En esta sección, comenzamos a agregar varias funciones: agregar, actualizar, eliminar y consultar. Primero, implementamos la pantalla en la recepción y luego hacemos el fondo para obtener datos.
1. Implementación en primer plano de la adición, actualización, eliminación y consulta de funciones
Hay una propiedad de la barra de herramientas en el control DataGrid, que agrega la barra de herramientas. Podemos agregar estos botones a la propiedad de la barra de herramientas para lograr las funciones correspondientes. Primero veamos la definición de la Barra de Herramientas de la documentación oficial:
Usamos matrices para definir la barra de herramientas y agregar el siguiente código a la página de consulta.jsp:
<%@ page lenguaje = "java" import = "java.util.*" PageEncoding = "utf-8"%> <! DocType html público "-// w3c // dtd html 4.01 transitional // en"> <html> <fead> <%@ include file = "/public/head.jspf"%> <type de estilo = "text/css" margen: 1px; } .searchbox {margen: -3; } </style> <script type = "text/javascript"> $ (function () {$ ('#dg'). dataGrid ({// cambia la dirección de url a solicitar categoryAction url: 'category_queryjoinacCount.action', singleselect: falso, // Si es verdadero, solo se permite la pantalla de una sola línea, la función de la solección es invalida // set pagination Mostrado por página, el valor predeterminado es 10 páginas: 5, // Establezca el número opcional de registros por página para la selección del usuario, el valor predeterminado es 10,20,30,40 ... pageList: [5,10,15,20], Idfield: 'id', // especificar ID como el campo de identificación, que es útil al deletear y actualizar. Page/ *****************************************/ Barra de herramientas: [{iconcls: 'icon-add', text: 'agregar categoría', manejador: function () {alert ('-agregar categoría-'); Categoría-- '); // Devuelve la fila seleccionada, si no se seleccionan filas, devuelve una matriz vacía if (rows.length == 0) {// Pop Up el mensaje de inmediato $ .messager.show ({// La sintaxis es similar a los métodos static en java. Título de las llamadas de objeto directo: `` Msg: 'al menos un registro debe ser seleccionado', Tiempo de espera: 2000, showType: 'Slide',},},},}; } else {// solicita si confirma la eliminación. Si se confirma, ejecute la lógica de deleción $ .messager.confirm ('Eliminar el diálogo Confirmar', '¿Está seguro de que desea eliminar este elemento?', Function (r) {if (r) {// Operación de salida; alerta ("-Eliminar operación--")}}); }}}}, '-', {// El botón de consulta no es un LinkButton, tiene sintaxis, pero también es compatible Buscar: function (valor, nombre) {// El valor representa el valor ingresado // operación de consulta}, indicador: 'Ingrese la palabra clave de búsqueda' // visualización predeterminada}); / ***************************************************************/}); </script> </head> <body> <table id = "dg"> </table> </body> </html>De esta manera, hemos configurado un marco de primer plano para agregar, actualizar, eliminar y consultar. Ahora se puede mostrar en primer plano. No hay datos en segundo plano, solo aparece un cuadro de inmediato, pero la función de visualización se ha completado. Echemos un vistazo al efecto:
A continuación, completaremos las funciones correspondientes una por una.
2. Implementación de la consulta de categoría de DataGrid
La implementación de la consulta es la más simple. Ingrese la palabra clave en el cuadro de búsqueda, luego pase la palabra clave como parámetro a la acción, y luego el servicio elimina los datos de la base de datos, la empaqueta en formato JSON y la pasa a la recepción para su visualización. Este proceso es el mismo que la información del producto que se muestra antes. Solo necesitamos agregar el código para la parte de búsqueda en el JSP anterior, y no hay necesidad de cambiar los otros códigos. El código agregado es el siguiente:
// Convierta el cuadro de texto ordinario en un cuadro de texto de búsqueda de consulta $ ('##ss'). Searchbox ({// activar el evento de consulta Buscador: function (valor, nombre) {// valor representa el valor de entrada // alerta (valor + "," + nombre) // Obtener la palabra clave de la consulta actual, cargar la información correspondiente a través de dataGrid y usar cargar y mostrar todas las líneas en la primera página. El atributo de 'Querams'.El método de carga puede cargar todas las filas en la primera página. Tiene un parámetro. Si se especifica, traerá consultas con él. De lo contrario, los parámetros especificados por QueryParams anteriores se pasan de forma predeterminada. Aquí establecemos el tipo en el valor del valor, es decir, la palabra clave de consulta ingresada por el usuario, y luego lo pasamos a la acción. Las búsquedas de fondo en la base de datos en función del valor ingresado por el usuario y lo devuelven al primer plano. Los resultados de la ejecución son los siguientes:
De esta manera, completé la función de búsqueda, que es relativamente simple.
3. Implementación de la eliminación de la categoría DataGrid
Ahora implementemos la función Eliminar. De lo anterior JSP, podemos ver que antes de la eliminación, determinamos si el usuario ha seleccionado un registro. Si no, le daremos al usuario un mensaje. Si se selecciona, una ventana emergente permitirá al usuario confirmar. Si es verdadero, se ejecutará la función Eliminar. Hay un detalle a tener en cuenta. Si desea eliminar múltiples registros a la vez, la propiedad SingleLect anterior debe establecerse en False.
Primero, hemos complementado el código eliminado en Query.jsp arriba, ver más abajo:
{iconCls: 'icon-remove', text: 'Eliminar categoría', handler: function () {// juzga si hay registros de fila seleccionados, use getSelections para obtener todas las filas seleccionadas var filas = $ ("#dg"). dataGrid ("getSelections"); // Devuelve la fila seleccionada, si no se seleccionan filas, devuelve una matriz vacía if (rows.length == 0) {// Pop Up el mensaje de inmediato $ .messager.show ({// La sintaxis es similar a los métodos static en java. Título de las llamadas de objeto directo: `` Msg: 'al menos un registro debe ser seleccionado', Tiempo de espera: 2000, showType: 'Slide',},},},}; } else {// solicita si confirma la eliminación. Si se confirma, la lógica de deleción se ejecuta $ .messager.confirm ('Eliminar el diálogo Confirmar', '¿Está seguro de que desea eliminar este elemento?', Function (r) {if (r) {// 1. Obtenga la identificación correspondiente del registro obtenido, emplome el valor de la identificación y luego envíe el fondo 1,2,3,4 var ids = "; para (var i = 0; ii <rows; i; i; i; i; i; i; i; i; i; i; i; i; i; i; i; i; i; i; i; i. ++) {IDS += Rows [i] .id +","; Operación de actualización posterior $ ("#DG"). DataGrid ("Uncheckall"); excepción ', msg:' Eliminar fallado, verifique la operación ', Tiempo de espera: 2000, ShowType:' Slide ',}); }}}}}}} Si el usuario elige eliminar, se aparecerá primero un cuadro de diálogo. Cuando el usuario determina que quiere eliminar, primero debemos obtener la ID del producto seleccionado por el usuario, empalde estas ID a una cadena y luego enviar una solicitud AJAX a los antecedentes. El primer parámetro en $ .post se envía a esa acción, el segundo parámetro es el parámetro enviado, y el tercer parámetro es la función de devolución de llamada, es decir, después de que la eliminación es exitosa, se ejecuta el método en la función. El resultado del parámetro de la función se transmite desde el fondo, y el cuarto parámetro es opcional, que es el tipo de datos de retorno. Centrémonos en el contenido en $ .post. Cuando el fondo devuelve un "verdadero" para indicar que la eliminación es exitosa, entonces llamamos al método de recarga en DataGrid para actualizar la página. La recarga es la misma que la carga utilizada en la consulta anterior. La diferencia es que la recarga permanece en la página actual después de la actualización, mientras que la carga muestra la primera página.
Bien, la parte de la página delantera está escrita. A continuación, complete el método correspondiente en el fondo. Primero, agregue el método DeleteByIds en la categoría de servicio e implie el método en su clase de implementación CategyServCeImpl:
// Interfaz de servicio CategyService Interfaz pública CategyService extiende BasesService <Cateatory> {// Información de categoría de consulta, en cascada la lista pública del administrador <Catherory> QueryjoinAccount (Tipo de cadena, INT Página, Tamaño int); // consulta el nombre de la categoría // consulta el número total de registros basados en palabras clave pública long getCount (tipo de cadena); // Eliminar múltiples registros basados en IDS public void DeleteByIds (IDS de cadena); } // CategyServiceImpl Implementation Class @SupplesSwarnings ("no verchado") @Service ("CategyService") Clasificación pública CategyServiceImpl extiende BaseServiceImpl <Catexory> Implementa Categoría de Categoría {// Otros métodos están omitidos y escritos ... puede referirse al contenido del capítulo correspondiente en el capítulo anterior @Override ViveDes hql = "eliminar de la categoría C donde c.id en (" + ids + ")"; getSession (). CreateQuery (HQL) .ExCuteUpdate (); }} Después de escribir la parte del servicio, comenzaremos a escribir la parte de acción. Debido a que queremos obtener los datos de IDS transmitidos desde la recepción, debe haber una variable en la acción que implementa los métodos GET y SET para recibir estos datos. Además, debemos pasar el resultado a la recepción. Cuando hacemos consultas en cascada en el capítulo anterior, el método utilizado es pavonearse para empaquetar los datos del resultado de la consulta en formato JSON y pasarlos a la recepción, por lo que se necesita un mapa, y luego el mapa se convierte en formato JSON a través del archivo de configuración. Aquí, los datos que pasamos a la recepción son relativamente simples. Si eliminamos con éxito las acciones, podemos pasar un "verdadero" para que no necesitemos empaquetarlo en formato JSON. Lo transmitimos a través de la transmisión. El principio es el mismo que antes. Primer Ministro, tenemos que tener un objeto de transmisión para guardar los bytes "verdaderos", y luego, a través de la configuración, el objeto se transmite a la recepción. Todavía escribimos estos dos objetos en Baseaction, como sigue:
@Controller ("BASEACTION") @Scope ("Prototype") Public Class Baseaction <T> Extiende ActionSupport implementa request AWare, SessionAware, ApplicationAware, ModelDipniven <T> {// Obtenga que se eliminen las IDS, debe haber un método Get y Set. Estos datos se obtienen mediante puntales y luego se transmiten al primer plano a través de la forma de una secuencia, por lo que implementa el método GET para proteger las ID de cadena; InputStream InputStream protegido; // omitido a continuación ...} Los métodos correspondientes en la categoría son los siguientes:
@Controller ("CategyAction") @Scope ("Prototype") Classication de clase pública extiende BASEACTION <Cateatory> {public String QueryJoinAccount () {// omitido ...} public String deletyByIds () {System.out.println (IDS); categoryService.deleteByids (IDS); // Si la eliminación es exitosa, se ejecutará hacia abajo. Pasamos "verdadero" al primer plano en forma de un flujo inputStream = new bytearrayInputStream ("verdadero" .getBytes ()); // Guardar los bytes de "verdadero" en la transmisión de inputstream return "Stream"; }} A continuación, veamos la configuración correspondiente en Struts.xml:
<Struts> <constant name = "struts.devmode" value = "true"/> <paquete name = "shop" extends = "json-default"> <!-jason-default herede struts-default-> <global-results> <resultado name = "aindex">/web web/main/aindex.jsp </sult> </global-results> <! Idsule Corcess the Id Gails a la identificación de la identificación de la identificación de la identificación de la identificación de la identificación de la identificación de la identificación de la identificación de la identificación <! Acción configurada en Spring, porque se debe entregar a Spring Management-> <Action Name = "Category_*" Method = "{1}"> <Result name = "jsonmap" type = "json"> <!-omitido-> </resultado> <resultado name = "stream" type = "stream"> <!-en el formulario de flujo de flujo de flujo se transmitirá en el imputstream-> </resultado> </action> <Action name = "Account_*" Method = "{1}"> <resultado name = "index">/index.jsp </ resultado> </solcion> <!-Se utiliza para completar la reenviación de la acción de la solicitud del sistema, todas las solicitudes se entregan para ejecutar-> <Action name = "Enviar _*_*_*_*"> "Result. name = "Send">/Web-Inf/{1}/{2} .jsp </resultado> </action> </paquete> </truts>De esta manera, hemos realizado la operación de eliminación y vemos el efecto:
Después de que la prueba sea exitosa, también podemos seleccionar varios elementos para eliminar al mismo tiempo. En este punto, se completa la función de eliminación.
Dirección original: http://blog.csdn.net/eson_15/article/details/51338991
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.