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

acanthis

Новичок
Вот что возвращается в ответе:


З.Ы. Причем данные добавляются без проблем в таблицу
Добавлю так же что в ответе у файрбага находятся не только json данные но и html с явой, а если точнее, то вот так:


А если смотреть в ваши экземплы то там чисто json
Всё, разобрался, сам виноват, не внимательно смотрел примеры )

Но возник один вопросик: есть ли возможность в колонках шапки таблицы менять высоту, а то названия колонки длинное и не влазит по ширине? Спасибо.
 

~WR~

Новичок
Через CSS только, но там много вложенных скрытых элементов. Чтобы корректно работало - высоту надо менять у всех.
Проще сокращать имена колонок, либо сделать горизонтальный скролл.
 

acanthis

Новичок
Через CSS только, но там много вложенных скрытых элементов. Чтобы корректно работало - высоту надо менять у всех.
Проще сокращать имена колонок, либо сделать горизонтальный скролл.
Ок, понял, спасибо за помощь! А вот при добавлении записи, в диалоге с инпутами можно менять св-во инпута, например, сделав выпадание календаря по нажатию на него, как у вас в примере?
 

acanthis

Новичок
Ок, понял, спасибо за помощь! А вот при добавлении записи, в диалоге с инпутами можно менять св-во инпута, например, сделав выпадание календаря по нажатию на него, как у вас в примере?
отвечу сам себе ))

PHP:
'editoptions' => array('dataInit' => $this->initDatepicker(array(
													'dateFormat'      => 'yy-mm-dd',
													'changeYear'      => true,
													'changeMonth'     => true,
													'firstDay'        => '1',
													'monthNamesShort' => array("Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"),
													'dayNamesMin'     => array("Вс","Пн","Вт","Ср","Чт","Пт","Сб"),
													'minDate'         => '2010-01-01',
													'maxDate'         => '2015-01-01',
                    ))),
Вставляем сей код в нужное нам поле таблицы и вводить дату руками не придется )

А вот как можно сделать так, чтобы при добавлении записи текущая дата автоматом прописывалась в инпут окна ввода данных?
 

acanthis

Новичок
PHP:
'editoptions' => array('defaultValue' => date('Y-m-d')),
Огромное спасибо.
На одном из первых постов Вы выкладывали фото Вашей таблицы. Я обратил внимание что у вас там организована некая авторизация (справа вверху был ваш логин и кнопка выход). Не расскажите поподробнее про эту реализацию? Как то можно привязать юзеров к определенным действиям, т.е. например, одним будет доступно редактирование всех колонок, а кому-то только часть. Спасибо!

И еще вопросик:
Я совершенно запутался в формате даты, что для поиска, что для добавление записи. как можно организовать и поиск и добавление записи с форматом даты: dd.mm.yy, а не с Y-m-d ? Такое ощущение что у меня дата вообще не передается в таблицу, потому что вместо даты там стоит 0000-00-00.
 

~WR~

Новичок
Да простой интерфейс на jQuery UI.
Привязать можно все угодно - ограничений нет. Закидываем объект User'а в класс грида, добавляем проверки.
Если есть права - показываем действия. Нет прав - не показываем. Обычная разработка без хитростей.

Я совершенно запутался в формате даты, что для поиска, что для добавление записи
Потому и не добавляю каких-то родных функций для работы с датами, что в этом вопросе каждая СУБД сама себе голова.
Добавьте новый searchOp, в нем превращайте дату в тот формат, который требуется.
PHP:
protected function searchOpDate($c, $val)
{
    $val = strtotime($val);
    if(empty($val)) return false;

    $val = date('Y-m-d H:i:s', $val);

    return $c['db'] . " = '$val'";
}
 

acanthis

Новичок
Потому и не добавляю каких-то родных функций для работы с датами, что в этом вопросе каждая СУБД сама себе голова.
Добавьте новый searchOp, в нем превращайте дату в тот формат, который требуется.
PHP:
protected function searchOpDate($c, $val)
{
    $val =  strtotime($val);
    if(empty($val)) return false;

    $val = date('Y-m-d', $val);

    return $c['db'] . " = '$val'";
}
Вставил этот код, но ничего не поменялось, дата передается в неизменном формате:

в самой таблице дата хранится в формате: 2012-07-09
 

~WR~

Новичок
Надо еще колонке поставить
PHP:
'search_op' => 'date'
Иначе как он узнает, что у него особый поиск?
Почитайте документацию, посмотрите примеры. Go RTFM! :)
 

acanthis

Новичок
Надо еще колонке поставить
PHP:
'search_op' => 'date'
Иначе как он узнает, что у него особый поиск?
Почитайте документацию, посмотрите примеры. Go RTFM! :)
Спасибо огромное. Документацию читаю, но не всегда сразу найдешь что нужно...
А не подскажите, какую ф-ию нужно добавить чтобы перед добавлением записи изменить формат даты? И можно ли добавлять свои кнопки к инпутам в окне ввода новой записи?
 

~WR~

Новичок
Для изменения формата сохраняемых данных используйте функцию operData.

По добавлению - посмотрите события beforeShow и afterShow для форм редактирования.
Там в аргумент передается то ли сама форма, то ли её id. Берем и на jQuery добавляем новые элементы. $.append и т.п.
 

acanthis

Новичок
Для изменения формата сохраняемых данных используйте функцию operData.

По добавлению - посмотрите события beforeShow и afterShow для форм редактирования.
Там в аргумент передается то ли сама форма, то ли её id. Берем и на jQuery добавляем новые элементы. $.append и т.п.
Сделал по аналогии с вашим примером, получилось:
PHP:
protected function operData($data)
{		
  $data['date'] = date('Y-m-d', $data['date']);
  return $data;
}
Формат не меняется при добавлении. Что-то я опять не в ту степь? :)
 

~WR~

Новичок
Степь вроде да. Только:
PHP:
$data['date'] = date('Y-m-d', strtotime($data['date']));
Посмотрите, какой конкретно запрос он отправляет на апдейт.
 

acanthis

Новичок
Степь вроде да. Только:
PHP:
$data['date'] = date('Y-m-d', strtotime($data['date']));
Посмотрите, какой конкретно запрос он отправляет на апдейт.
С датами, с вашей помощью разобрался :)
А вот с добавлением элемента на форму добавления записи не очень (( Куда конкретно код явы вставлять нужно? Если можно, то приведите небольшой пример. Спасибо.
 

acanthis

Новичок
С датами, с вашей помощью разобрался :)
А вот с добавлением элемента на форму добавления записи не очень (( Куда конкретно код явы вставлять нужно? Если можно, то приведите небольшой пример. Спасибо.
Опять же отвечу сам себе :)
в св-во поля вставляем:
PHP:
'formoptions' => array('elmsuffix' => '<input type="submit" value="Моя кнопка"/>'),
Только вот никак не могу добиться того, чтобы календарь вылезал не при получении фокуса, а при нажатии на кнопку. Делаю так:
PHP:
...
'showOn'          => 'button',
'buttonImage'     => 'images/calendar.gif',
'buttonImageOnly' => true,
...
Но ничего не появляется (( Получается что календарь работает только при получении фокуса...
 

4aki.zp

Новичок
подскажите как сделать экспорт в excel? excel:true - даже кнопка не появляется
 

sasa

Новичок
Здравствуйте.
Имеется таблица с субгридом. Подскажите пожалуйста как изменить значение в ячейке основной таблицы после добавления (изменения/удаления) данных в субгриде.
 

~WR~

Новичок
У всех типов редактирования есть событие, которое происходит в случае успеха.
Для формы это afterComplete и afterSubmit.

Прямо в нем вызываем setRowData или setCell для основной таблицы и меняем данные.
Основная таблица доступна везде через глобальную переменную ${id_таблицы}.

Или есть другой вариант.
Если сабгрид всегда обновляется после редактирования, можно повесить обработчик на его событие gridComplete, и в нем всегда обновлять родительский ряд новыми данными.
Дополнительные данные от сервера можно посылать через userdata.
 

acanthis

Новичок
Уважаемый ~WR~! Подскажите плз мне по поводу моего поста выше, по поводу календаря. Спасибо.
 
Сверху