jqGridPHP - таблицы на ajax без головной боли

micecrime

Новичок
Здравстиуйте!
Подскажите пож-та, что я делаю нетак?
Мне необходимо выводить только те данные данные в grid, которые удовлетворяют условию, для этого я в классе объявляю переменну inv, а затем присваиваю ей значение и подставляю в $this->query.
Если присваивать статичные данные, например:
$this->inv=1;
$this->query='SELECT {fields} FROM reestr WHERE inv='.$this->inv.' and {where};';
,то все работает правильно,
если же в $this->inv передавать какие-либо значения из загрузчика, например $this->inv=$this->loader->get('inv'); то $this->inv в итоге присваивается значение, равное 0. При этом в загрузчике переменную я добавил и значение ей присвоил при помощи set (тип данных - числовой).
 

~WR~

Новичок
Видимо, дело в том, что функция attachDatepicker устарела много лет назад, и в последнем jquery ui конечно её нет.
PHP:
$('#exampleRange').datepicker();
- вот так работает.
 

~WR~

Новичок
jjsf, всё как обычно. $(selector).plugin();
В смысле, jqGrid ничем не отличается от обычной html-страницы. Просто используйте любые плагины.
 

tyu

Новичок
~WR~, спасибо огромное. Скажи еще как сделать чтоб при редактировании поле было видно, но нельзя было редактировать.
 

DeepNN

Новичок
~WR~, добрый день!
Подскажите, как реализовать редактирование некоторых ячеек прямо в гриде, без вызова формы редактирования, т.е. так называемый cell_editing ?
Я пробую так - для поля Примечание (NOTE в БД) указываю
PHP:
'editable' => true,
'edittype' => 'text',
В опциях грида указываю
PHP:
'cellEdit' => true,
'cellsubmit' => 'remote',
вроде как нужно указать что-то еще в cellurl, только не пойму что.

Фокусируюсь на ячейке, она становится редактируемой, ввожу "тест". При потере фокуса на сервер уходит

NOTE тест
id 4113
oper edit

Ответ от сервера содержит { "success": "1" }
Но реально в базе значение поля NOTE не обновляется.
 

~WR~

Новичок
Всё правильно сделали.

Cellurl заполняется автоматически.
Запросы отсылаются правильные, ответ приходит правильный.

Круг поиска очень узкий. Скорее всего, тут одно из двух:
1). Перегружена функция opEdit, и в ней необычная логика.
2). Не подходит стандартный запрос UPDATE table SET NOTE='тест' WHERE id='4113'.
 

tyu

Новичок
~WR~, классно все объясняете!
Есть еще пара вопросов:
1. Есть у jqGrid`а метод или функция показывающая поле для внесения информации (по типу поля появляющегося для добавления/редактирования) ?
2. Второй вопрос забыл пока писал первый.
 

~WR~

Новичок
Не совсем понимаю, чем внесение информации отличается от добавления? :)
 

tyu

Новичок
Данные в таблице выводятся за период. Я делаю кнопку чтоб этот период можно было изменить. По нажатию на кнопку выскакивает div с полями для заполнения, которых нет в таблице. т.е. этот div я могу сам написать, но зачем, если, наверняка, такой метод есть в jqGrid и все будет в едином стиле.
 

jjsf

Новичок
Есть столбец number.Есть кнопка.
Как применить значение number на выделенной строке, в функции для кнопки?
И как вывести сообщение если строка не выделена(как а случае с редактированием и удалением)?
PHP:
$grid.jqGrid("navButtonAdd", pager,
        {
            caption:"-",
            title:"Рисунок",
            buttonicon:"ui-icon-image",
            onClickButton:function () {

                       location='/test.php?id={number}';

                   }
	  });
Пробывал так - не работает.
 

~WR~

Новичок
$grid.getGridParam('selrow') - id выбранного ряда. Если ряд не выбран, то вернет null.
$grid.getCell(id, 'number') - получить значение колонки number из ряда, переданного в id.
 

~WR~

Новичок
По нажатию на кнопку выскакивает div с полями для заполнения, которых нет в таблице. т.е. этот div я могу сам написать, но зачем, если, наверняка, такой метод есть в jqGrid и все будет в едином стиле.
Afaik, единого метода нет. Содержимое каждой формы генерируется отдельно по кусочкам прямо в коде.
Максимум - есть jqModal, который добавит оверлей и посчитает координаты.

В общем, high level функции особо и не нужны. Имея jQuery, легко и быстро написать свои.
 

DeepNN

Новичок
~WR~, доброго времени суток!
У меня вопрос, связанный с модификацией функции экспорта данных - как результирующий набор данных не в файл сохранять, а показывать в новом окне браузера?

Поясню, для чего это нужно - пользователи просят сделать возможность формирования документов/отчетов, которые можно сразу же печатать.
Я вижу это примерно так:
1) подготовлю шаблоны соответствующих запросов;
2) пользователь вызывает форму поиска, выбирает нужный шаблон, вводит требуемый для отчета параметр, запускает поиск - и в гриде получаем нужный набор записей;
3) на pager-е имеем кнопку по принципу "экспорт в Excel", нажатием на нее
4) открывается новое окно браузера с html-страницей, в составе которой
- 4.1) шапка (заголовок, какой-то текст)
- 4.2) табличка на основе данных из грида
- 4.3) какой-то завершающий текст.
5) пользователь отправляет документ на печать.

Как подготовить шаблоны запросов и вставить текст до/после таблицы с данными - это мне понятно.
Не пойму как html-страничку направить в новое окно браузера вместо сохранения в файл.
Предполагаю, что нужно модифицировать extExport в jqgrid-ext.js.

Буду признателен за совет.
 

~WR~

Новичок
Вместо скрытого iframe'а делаем window.open с тем же адресом - получаем новое окно.
Меняем заголовки где-то в районе jqGrid_Export_ExcelHtml. Вместо Content-type: application/xxx пишем text/html. Удаляем лишние.
Диалог сохранения файла не появится. Вместо этого будет простой html документ.

Но вообще, чтобы было реально красиво, нужно постараться. Подогнать CSS, добавить всякие теги для печати.
 
Сверху