Dans la section 8, nous avons rempli les fonctions de requête et de suppression des catégories de produits, il est donc facile de mettre en œuvre les fonctions de requête et de suppression de produits. Le principe est exactement le même que dans la section 8, modifiez simplement certains paramètres, tels que la demande de différentes actions, etc. Étant donné que l'interrogation et la suppression des produits ne nécessitent pas une nouvelle fenêtre d'interface utilisateur pour apparaître, nous devons simplement terminer la partie correspondante dans Query.jsp et l'arrière-plan correspondant.
1. Implémentation de la fonction de requête du produit
La fonction de requête est principalement implémentée dans la zone de requête. Dans la section précédente, nous pouvons voir que la zone de requête utilise un texte: "<input id = 'ss' name = 'ss' />". Nous l'implémentons en convertissant la zone de texte ordinaire en zone de texte de recherche de requête. Ci-dessous, nous ajoutons la partie correspondante du code dans Query.jsp:
$ ('# ss'). SearchBox ({// Trigger Query Event Searcher: function (valeur, name) {// valeur représente la valeur d'entrée // ajouter le code de déclenchement $ ('# dg'). datagrid ('charger', {// reload, spécifier le nom de la recherche paramètre comme la valeur d'entrée de l'utilisateur: valeur});}, invite: 's'il vous plaît entrez le mot de clé de recherche'});Les résultats des tests sont les suivants:
La requête est très simple, tout comme le chargement de tous les produits dans la section précédente, sauf que lors de la requête, les paramètres sont définis sur la valeur saisie par l'utilisateur et lors du chargement de tous les paramètres sont définis sur vide.
2. Implémentation de la fonction de suppression des produits
Ensuite, nous terminerons la fonction de supprimer des produits. Tout d'abord, nous terminerons le code correspondant dans Query.jsp:
{iConcls: 'icon-remove', texte: 'supprimer le produit', gestionnaire: function () {// ajouter le code de déclenchement var lignes = $ ("# dg"). dataGrid ("getSelections"); // Défendez-vous s'il existe un enregistrement de ligne sélectionné, utilisez GetSelelections pour obtenir toutes les lignes sélectionnées // Renvoyez la ligne sélectionnée. Si aucune ligne n'est sélectionnée, renvoyez un tableau vide if (Rows.Length == 0) {// apparaître le message de l'invite $ .Messager.show ({// La syntaxe est similaire à la méthode statique dans Java. Title des appels d'objets directs: «Error Invite», «Slive», au moins un enregistrement doit être sélectionné », délai: 2000, showtype: 'Slide',}); } else {// invite à confirmer la suppression. Si confirmé, la logique de la suppression est exécutée $ .sesager.confirm ('supprimer la boîte de dialogue confirmer', 'êtes-vous sûr de vouloir supprimer cet élément?', Fonction (r) {if (r) {// 1. Obtenez l'ID correspondant de l'enregistrement obtenu, splice la valeur de l'ID, puis envoyez l'arrière ++) {ids + = lignes [i] .id + ",";} ids = ids.substraux (0, ids.lastIndexof (",")); Mettre à jour l'opération $ ("# dg"). DataGrid ("Uncheckall"); MSG: 'Supprimer l'échec, veuillez vérifier l'opération', Timeout: 2000, showType: 'Slide',});}}, "texte");}}); }}}}}}} Comme on peut le voir à partir du code ci-dessus, l'opération de suppression nécessite qu'au moins un enregistrement soit sélectionné en premier. Après avoir sélectionné, lors de la confirmation de la suppression (c'est-à-dire que R est vrai), obtenez d'abord les enregistrements qui ont été vérifiés par l'utilisateur, épissé les numéros d'identification de ces enregistrements, puis souhaitent envoyer une demande ajax en arrière-plan, demandez la méthode DeleteByIds dans ProductAction et prenez l'ID épissé comme paramètre. Si la suppression est réussie, renvoyez une chaîne "vrai" au premier plan, puis le premier plan effacera l'enregistrement qui vient de vérifier pour éviter d'affecter l'opération de mise à jour ultérieure, car la mise à jour doit également vérifier l'enregistrement, puis actualiser la page actuelle et recharger toutes les informations du produit dans la base de données.
Le processus est très clair. Écrivons le programme d'arrière-plan, en commençant par la couche de service:
Interface publique ProductService étend BaseService <Rudding> {// Informations sur les produits de requête, catégories en cascade Liste publique <produit> QueryJoincategory (type de chaîne, page int, taille int); // requête en utilisant le nom du produit // requête le nombre total d'enregistrements basés sur les mots clés public long getCount (type de chaîne); // Supprimer plusieurs enregistrements basés sur les ids public void DeleteByIds (String IDS); } @SuppressWarnings ("Unchecked") @Service ("ProductService") Public Class ProductServiceImpl étend BaseServiceImpl <Product> Implementation Producceservice {// omettre d'autres codes ... @Override public void DeleteByids (String ids) {String hql = "supprimer du produit p où p. getSession (). CreateQuery (HQL) .ExECuteUpdate (); }} Ensuite, complétez la méthode DeleteByids dans ProductAction:
@Controller ("ProductAction") @Scope ("Prototype") public Class ProductAction étend BaseAction <RODUCTEM ProductService.DeleteByids (IDS); // Si la suppression est réussie, elle sera exécutée vers le bas. Nous passerons "True" au premier plan sous la forme d'un flux InputStream = new ByTearRayInputStream ("true" .getBytes ()); retourner "Stream"; }}La même idée qu'auparavant pour la suppression des classes de produits, ce qui suit est configuré dans struts.xml:
<action name = "product_ *" méthode = "{1}"> <! - omettre d'autres configurations -> <résultat name = "stream" type = "stream"> <param name = "inputName"> inputStream </ param> </sult> </ action>De cette façon, la chaîne "True" sera transmise à la réception et la suppression réussira après avoir reçu les instructions. Découvrez l'effet:
Le test a été réussi et à ce stade, les fonctions de recherche et de suppression du produit ont été remplies.
Cet article Adresse: http://blog.csdn.net/eson_15/article/details/51360804
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.