~WR~
Новичок
Тут примерчик есть
http://jqgrid-php.net/examples/?render=jqMiscDatepickers
http://jqgrid-php.net/examples/?render=jqMiscDatepickers
Да, с этим у меня проблем не возникло, но я говорил о календарике в окне ввода данных. Т.е. при получении фокуса все работает, но когда я пытаюсь сделать как тут, у меня ничего не выходит. Вместо иконки у меня пустота. Кстати такая же история и с примером который вы мне привели. Только на получение фокуса появляется он.Тут примерчик есть
http://jqgrid-php.net/examples/?render=jqMiscDatepickers
нет, пути верные, выставлял путь на левый сайт, и по прямой ссылке у меня иконка открывается, сам не пойму в чем прикол...Наверное потому, что путь к иконке неправильный.
Пропишите правильный buttonImage.
$('#element_id').datepicker(....);
Пойдем другим путем Как изменить фокус при открытии окна ввода данных?Debug it.
Открываем firebug, открываем форму, тыкаем на элемент, смотрим его id.
На вкладке console ручками пытаемся прицепить к нему datepicker с параметрами.
PHP:$('#element_id').datepicker(....);
Если не получилось - пытаемся понять, в чем причина. Меняем параметры, пробуем снова.
Когда получится - прописываем их в окончательный код.
Добавляю туда вручную пару записейCREATE TABLE IF NOT EXISTS `tbl_customer` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`first_name` text NOT NULL,
`last_name` text,
`email` text NOT NULL,
`phone` text,
`discount` decimal(4,2) NOT NULL DEFAULT '0.00',
`date_register` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`date_birth` date DEFAULT NULL,
`contract_type` tinyint(4) unsigned NOT NULL,
PRIMARY KEY (`id`)
)
<?php
class jqSimple extends jqGrid
{
protected function init()
{
#Set database table
$this->table = 'tbl_customer';
#Make all columns editable by default
$this->cols_default = array('editable' => true);
#Set columns
$this->cols = array(
'id' =>array('label' => 'ID',
'width' => 10,
'align' => 'center',
'editable' => false, //id is non-editable
),
'first_name'=>array('label' => 'First name',
'width' => 35,
'editrules' => array('required' => true),
),
'last_name' =>array('label' => 'Last name',
'width' => 35,
'editrules' => array('required' => true),
),
'email' =>array('label' => 'Email',
'width' => 30,
'editrules' => array('email' => true),
),
'phone' =>array('label' => 'Phone',
'width' => 25,
'align' => 'center',
),
'discount' =>array('label' => 'Discount',
'width' => 15,
'formatter' => 'numeric',
'align' => 'center',
'editable' => false,
),
);
#Set nav
$this->nav = array('add' => true, 'edit' => true, 'del' => true);
#Add filter toolbar
$this->render_filter_toolbar = true;
}
}?>
require_once 'php/jqGridLoader.php';
$loader = new jqGridLoader;
$loader->set("db_driver", "PDO");
$loader->set("pdo_dsn" , "mysql:dbname=jqgridphp;host=127.0.0.1");
$loader->set("pdo_user" , "jqgridphp");
$loader->set("pdo_pass" , "jqgridphp");
$jq_loader->autorun();
Заранее спасибо.<script>
<?= $rendered_grid ?>
</script>
По умолчанию этот скрипт прописывается в файлике, находящийся в папке templates (путь можно менять в файле _layout.php). В вашем случае это будет файл с именем jqSimple.php и содержать 3 строчки кода:Далее в пример говориться про JS, но я так и не соображу, где его вызвать
Заранее спасибо.PHP:<script> <?= $rendered_grid ?> </script>
<script>
<?= $rendered_grid ?>
</script>
$this->query = "Ваш запрос";
Спасибо большое, сегодня обязательно попробую. Еще раз спасибо разработчика за проделанную работуПо дефолту запрашиваются все данные из таблицы, в противном случае пишите свой запрос в классе:
Да, действительно, по умолчанию все ок. Но когда в ячейке стоит вот такой тип поиска:По умолчанию не должно быть такого. Все корректно escape'ится и при записи, и при выводе.
Код в студию.
'stype' => 'select',
'searchoptions' => array(
'value' => new jqGrid_Data_Value($delivery_types, 'All'),
),
return '"' . implode(';', $base) . '"';
return jqGrid_Utils::jsonEncode(implode(';', $base));
Спасибо, это не так критично. Позже проверю ваш вариант.Хм, интересно.
Попробуйте в jqGrid_Data_Value найти:
Заменить на:PHP:return '"' . implode(';', $base) . '"';
PHP:return jqGrid_Utils::jsonEncode(implode(';', $base));
Вообще, это смешно, но в jqGrid нет нормального способа передать произвольные значения в select'ы.
В случае с объектом он теряет порядок в Chrome, Safari, Opera.
В случае со строкой он фейлится на разделителях (двоеточия, точка с запятой).
Надо бы добавить нормальный вариант: массив с объектами, содержащими ключ и значение.
И порядок сохранится, и разделители не будут мешать, и всё это пойдет через стандартный jsonEncode.
Сделаю pull request, как руки дойдут.
protected function opGetSelect()
{
$this->response['select'] = array(1 => 'Foo', 2 => 'Bar');
}
огромное спасибо. А можно ли в ячейках таблицы делать перенос по словам, если строка не умещается в ячейке?И есть ли в поле ввода данных возможность организовать автозаполнение?Тут есть опции dataUrl и buildSelect.
http://www.trirand.com/jqgridwiki/doku.php?id=wiki:common_rules
В dataUrl прописываем url на операцию грида, которая вернет json с вариантами.
Просто добавляем к обычному url грида параметр: &oper=get_select
Делаем обработчик:
Потом в buildSelect разбираем пришедший json и формируем на его основании готовый select.PHP:protected function opGetSelect() { $this->response['select'] = array(1 => 'Foo', 2 => 'Bar'); }
Пример писать лень.
Да, еще одно. Если используете редактирование через форму, то поставьте ей опцию recreateForm=true, иначе он только один раз запросит select и не будет обновлять его при каждом открытии.
Можно. Из-за особенностей CSS таблиц, проще всего в parseRow вызывать php-функцию wordwrap и явно переносить символом \n.А можно ли в ячейках таблицы делать перенос по словам, если строка не умещается в ячейке?
Конечно - это же jQuery.И есть ли в поле ввода данных возможность организовать автозаполнение?