В предыдущем разделе мы завершили использование DataGrid для отображения всей информации о продукте. В этом разделе мы начали добавлять несколько функций: добавить, обновить, удалить и запросить. Сначала мы реализуем дисплей на стойке регистрации, а затем делаем фон для получения данных.
1. Реализация переднего плана функций добавления, обновления, удаления и запроса
В управлении DataGrid есть свойство панели инструментов, которое добавляет панель инструментов. Мы можем добавить эти кнопки в свойство панели инструментов для достижения соответствующих функций. Давайте сначала посмотрим на определение панели инструментов официальной документации:
Мы используем массивы для определения панели инструментов и добавляем следующий код на страницу Query.jsp:
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <%@ inclod Полевая: 1px; } .searchbox {margin: -3; } </style> <script type = "text/javascript"> $ (function () {$ ('#dg'). DataGrid ({// Изменить адрес URL на CategoryAction url: 'Category_QueryJoinaccount.action', SingleLectelect: false, // Если true, только один линейный отображение, разрешено. Записи, отображаемые на странице, по умолчанию составляет 10 страниц: 5, // Установите дополнительное количество записей на страницу для выбора пользователя, по умолчанию составляет 10,20,30,40 ... Pagelist: [5,10,15,20], idfield: 'id', // Укажите идентификатор идентификатора в качестве идентификационного поля, который полезен при удалении и обновлении. Page/ *********************************** Категория-- '); // Возврат выбранной строки, если строки не выбраны, верните пустой массив if (row.length == 0) {// всплыть в подсказке $ .messager.show ({// Синтаксис похож на статические методы в Java. Прямые вызовы объекта: 'reffice', MSG: «По крайней мере, одна запись должна быть выбранная», Timeout: 2000, Showpe } else {// Подсказывать ли подтверждение удаления. Если подтверждено, выполните логику удаления $ .messager.confirm ('удалить DEFIT DIAOG', 'Вы уверены, что хотите удалить этот элемент? }}}}, '-', {// Кнопка запроса не является Linkbutton, она имеет синтаксис, но также поддерживает диаграмму текста тега HTML: "<input ID = 'ss' name = 'ss' name = 'ss' />"}], // Конвертирование обычного текстового поля в текстовое поле opery $ ('#ss'). Searcher: function (value, name) {// значение представляет введенное значение // Операция запроса}, приглашение: 'Пожалуйста, введите ключевое слово SEASC' // DEFAULT DISPLAY}); / ******************************************* </script> </head> <body> <table id = "dg"> </table> </body> </html>Таким образом, мы настроили фонд переднего плана для добавления, обновления, удаления и запросов. Теперь он может быть отображен на переднем плане. В фоновом режиме нет данных, просто появляется только коробка для приглашения, но функция дисплея была завершена. Давайте посмотрим на эффект:
Далее мы выполним соответствующие функции один за другим.
2. Реализация запроса категории DataGrid
Реализация запроса является самой простой. Введите ключевое слово в поле поиска, затем передайте ключевое слово в качестве параметра в действие, а затем служба извлечет данные из базы данных, упаковывает его в формат JSON и передает его на стойку регистрации для отображения. Этот процесс такой же, как информация о продукте, отображаемая ранее. Нам нужно только добавить код для поисковой части в приведенном выше JSP, и нет необходимости изменять другие коды. Добавленный код заключается в следующем:
//Convert the ordinary text box into a query search text box $('#ss').searchbox({ //Trigger the query event searcher:function(value,name){ //value represents the input value//alert(value + "," + name) //Get the keyword of the current query, load the corresponding information through DataGrid, and use load to load and display all lines on the first page. //If a parameter is specified, it will Замените атрибут «Queryparams».Метод загрузки может загружать все строки на первой странице. У него есть параметр. Если указано, это принесет с собой Queryparams. В противном случае параметры, указанные Queryparams выше, передаются по умолчанию. Здесь мы установили тип значения значения, то есть ключевое слово запроса, введенное пользователем, а затем передаем его действию. Фоновые поиски в базе данных на основе значения, введенного пользователем, и возвращает его на передний план. Результаты выполнения следующие:
Таким образом, я завершил функцию поиска, что относительно просто.
3. Реализация удаления категории DataGrid
Теперь давайте реализуем функцию удаления. Из приведенного выше JSP мы видим это до удаления, мы определяем, выбрал ли пользователь запись. Если нет, мы дадим пользователю подсказку. Если он будет выбран, всплывающее окно позволит пользователю подтвердить. Если это правда, функция удаления будет выполнена. Есть деталь, чтобы отметить. Если вы хотите удалить несколько записей одновременно, свойство SingleSelect выше должно быть установлено на false.
Во -первых, мы дополнили код, удаленный в Query.jsp выше, см. Ниже:
{iconcls: 'icon-remove', text: 'Delete Category', Handler: function () {// Существуют ли выбранные записи строк, используйте GetSelections, чтобы получить все выбранные строки var row = $ ("#dg"). DataGrid ("getSelections"); // Возврат выбранной строки, если строки не выбраны, верните пустой массив if (row.length == 0) {// всплыть в подсказке $ .messager.show ({// Синтаксис похож на статические методы в Java. Прямые вызовы объекта: 'reffice', MSG: «По крайней мере, одна запись должна быть выбранная», Timeout: 2000, Showpe } else {// Подсказывать ли подтверждение удаления. Если подтверждено, выполняется логика удаления $ .messager.confirm ('delete подтвердить диалог', 'вы уверены, что хотите удалить этот элемент? {Ids + = Rows [i] .id + ","; Операция $ ("#DG"). DataGrid ("Uncheckall"); MSG: «Удалить, пожалуйста, проверьте операцию», Timeout: 2000, Showtype: 'Slide',}); }}}}}}} Если пользователь решит удалить, сначала появится диалоговое окно. Когда пользователь определяет, что он хочет удалить, нам сначала необходимо получить идентификатор продукта, выбранного пользователем, разъедините эти идентификаторы в строку, а затем отправить запрос Ajax на фон. Первый параметр в $ .post отправляется на это действие, второй параметр - это отправленный параметр, а третий параметр - функция обратного вызова, то есть после успешного удаления метод функции выполняется. Результат параметра функции передается из фона, а четвертый параметр не является необязательным, что является типом возвращаемых данных. Давайте сосредоточимся на контенте в $ .post. Когда фон возвращает «истину», чтобы указать, что удаление успешно, мы называем метод перезагрузки в DataGrid, чтобы обновить страницу. Перезагрузка такая же, как и нагрузка, используемая в предыдущем запросе. Разница в том, что перезагрузка остается на текущей странице после обновления, а нагрузка отображает первую страницу.
Хорошо, написана часть на передней странице. Затем завершите соответствующий метод в фоновом режиме. Во -первых, добавьте метод DeleteByids в категорию и реализуйте метод в своем классе реализации CategoryServceImpl:
// категория интерфейса интерфейса общего интерфейса CategoryService Extends BaseResvice <Категория> {// Информация о категории запросов, Cascading Administrator Public List <Категория> QueryJoinaccount (тип строки, int page, int size); // Запросить имя категории // Запросить общее количество записей на основе ключевых слов Public Long GetCount (Type Type); // Удалить несколько записей на основе идентификаторов Public void deleteByids (String IDS); } // CategoryServiceImpl Class @suppresswarnings ("unchecked") @Service ("Категория -сервис") Категория класса. = "Удалить из категории C, где c.id in (" + ids + ")"; getSession (). CreateQuery (hql) .executeUpdate (); }} После написания услуги мы начнем писать часть действия. Поскольку мы хотим, чтобы данные IDS были переданы с стойки регистрации, в действии должна быть переменная, которая реализует методы GET и SET для получения этих данных. Кроме того, нам нужно передать результат на стойку регистрации. Когда мы выполняем каскадные запросы в предыдущей главе, используемый метод состоит в том, чтобы набрасываться для упаковки данных результатов запроса в формат JSON и передать их на стойку регистрации, поэтому необходима карта, а затем карта преобразуется в формат JSON через файл конфигурации. Здесь данные, которые мы передаем на стойку регистрации, относительно просты. Если мы успешно удаляем акции, мы можем просто передать «истинную», поэтому нам не нужно собирать их в формат JSON. Мы передаваем его через потоковую передачу. Принцип такой же, как и раньше. Премьер -министр, у нас должен быть объект потока, чтобы сохранить «истинные» байты, а затем через конфигурацию объект передается на стойку регистрации. Мы все еще пишем эти два объекта в базеатровании следующим образом:
@Controller ("baseaction") @scope ("прототип") открытый класс Baseaction <t> расширяет действия, внедряющие реализацию запроса, Sessionaware, Applicationaware, ModelDriven <t> {// Получение идентификаторов, которые должны быть удалены, должен быть метод получения и установленного метода // Поток используется для возврата данных на первоначальныйгра. Эти данные получают с помощью стойки, а затем передаются на передний план через форму потока, поэтому реализуйте метод получения защищенных идентификаторов строк; Защищенный inputstream inputstream; // опущен ниже ...} Соответствующие методы в категории следующие:
@Controller ("CategyOrachAction") @Scope ("Prototype") Общедоступный категория класса Extens Baseaction <Category> {public String QueryJoinaccount () {// опущен ...} public String deleTebyids () {System.out.println (ids); CategoryService.DeleteByids (IDS); // Если удаление будет успешным, оно будет выполнено вниз. Мы передаем «True» на передний план в форме потока inputStream = new BytearRayinptStream («true» .getBytes ()); // Сохранить байты «true» в потоковую inputstream return «потоки»; }} Далее, давайте посмотрим на соответствующую конфигурацию на struts.xml:
<struts> <constant name="struts.devMode" value="true" /> <package name="shop" extends="json-default"><!-- jason-default inherits struts-default --> <global-results> <result name="aindex">/WEB-INF/main/aindex.jsp</result> </global-results> <!-- class corresponds to the id value of the Action Настроено в пружине, поскольку его следует передать на управление пружиной-> <name = "category_*" method = "{1}"> <result name = "jsonmap" type = "json"> <!-опущен-> </result> <result name = "stream" type = "stream"> В форме потока, type-> <param-name = "inpute"> </intremstram </into into intult withs> </intoptame </into intult intome intaum> </into intultame </into intultam intule Передано в ImputStream-> </result> </action> <name = "account_*" method = "{1}"> <result name = "index">/index.jsp </result> </action> <!-используется для завершения действия действия системы системы, все запросы передаются для выполнения-> <cept name = " name = "send">/web-inf/{1}/{2} .jsp </result> </action> </package> </struts>Таким образом, мы сделали операцию удаления и видим эффект:
После успеха тестирования мы также можем выбрать несколько элементов для удаления за один раз. На этом этапе функция удаления завершена.
Оригинальный адрес: http://blog.csdn.net/eson_15/article/details/51338991
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.