css, html, php, javascript, jQuery, ajax … – решения, примеры, рецепты
25 Янв
- Не робейте -, сказала Черная Королева, – это всего-навсего баранья нога, ни больше ни меньше.
Она вам понравится, уверяю вас.
Познакомьтесь. Алиса, это Баранья Нога.
Баранья Нога, это Алиса.
Предисловие
Весь цикл статей направлен в первую очередь на начинающих разработчиков, которые постигают все прелести jQuery. Которые имеют базовые знания и понимания работы с этой библиотекой. Для разработчиков, которые впервые слышат слово jQuery я бы посоветовал цикл видео уроков Евгений Попова (Уроки 1-4 и Уроки 5-6) или книгу Геннадия Самкова jQuery. Сборник рецептов.
Во всех статьях, я постараюсь максимально подробно охватить материал, чтобы исключить появление примитивных вопросов. Также хочется сразу предупредить, я не буду учить вас программированию на PHP, этот материал как и весь ресурс посвящен в первую очередь jQuery и технологиям AJAX. Поэтому пожалйста не задавайте вопросы «как мне защититься от хакеров?», «как мне сделать авторизацию?» и т.п., на эту тему вы всегда сможете найти массу материала на дружественных сайтах.
Введение
Любой набор данных можно представить в виде двумерного массива – таблицы. Я считаю таблицу одним из фундаментальных элементов представления информации. Благодаря такой структуре организации человек может увидеть, оценить и легко манипулировать данными в такой форме.
В данном цикле статей я постараюсь познакомить вас и вместе с вами сам постигнуть все прелести замечательнейшего плагина для jQuery – jqGrid. Чтобы дать вам почувствовать этого «монстра», да-да именно «монстра», я приведу ссылку на демо-галерею сайта разработчика. Рекомендую посмотреть все примеры работы с таблицей.
Лично я, когда увидел «это» был шокирован и решил разобрать этот плагин. Но сразу же был разочарован, он не заработал! А перепроверив все еще раз я понял, что проблема не в плагине, а во мне. Вот еще одна причина, по которой я сел за этот цикл. Далее меня настигло еще одно разочарование, скрипт вызывал ошибку в IE и отказывался работать. Это было связанно с багом в коде плагина, которую устранили к версии 3.6.1 (На момент написания статьи, последняя версия была 3.6.2). Таким образом я «вляпался» в этот плагин. Уверен вы устали от моей пустой болтовни и следует перейти к делу.
I. Подготовка к установке
Перед началом любых работ нам необходимо заготовить «инструменты» и «материалы».
Инструменты (которые использую я)
Вобщем все стандартные пакеты в репозитории Debian. Если вы предпочитаете Windows, то я могу посоветовать вам Denwer
Материалы
II. Документ, в котором будет использоваться jqGrid
Аннотация:
1) Html – разметка
Итак создадим документ с разметкой следующего вида:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Осваиваем jqGrid с Linkexchanger</title></head> <body> <table id="le_table"></table> <div id="le_tablePager"></div> </body> </html>
Как видите самый незаурядный код чистой страницы, где <table id=»le_table»></table> это и есть таблица которую вы видели на демо, а <div id=»le_tablePager»></div> – это элемент таблицы, «статус бар» (status bar), о нем поговорим позже. Здесь следует сказать, что в качестве селектора таблицы лучше использовать именно атрибут ID, почему? Ответ на этот вопрос будет дан по мере изучения плагина.
2) Html + CSS + JS
Далее переходим к подключаем необходимые стили и скрипты. Для начала создадим на сервере, в рабочем каталоге следующую структуру.
Теперь по каждому каталогу подробнее:
Теперь следует перепроверить всю структуру каталога еще раз. Именно на этом этапе я допустил первую ошибку, упоминавшуюся во введении.
Далее необходимо подключить всю эту кухню
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
<meta http-equiv="Content-Type" content="text/html;
charset=utf-8" />
<title>Осваиваем jqGrid с Linkexchanger</title>
<link rel="stylesheet" type="text/css" media="screen" href="css/flick/jquery-ui-1.7.2.custom.css" />
<link rel="stylesheet" type="text/css" media="screen" href="css/ui.jqgrid.css" mce_href="css/ui.jqgrid.css" />
<style>html, body {
margin: 0;
padding: 0;
font-size: 80%;
}
</style>
<script type="text/javascript" src="js/jquery-1.4.min.js"></script>
<script type="text/javascript" src="js/i18n/grid.locale-ru.js"></script>
<script type="text/javascript" src="js/jquery.jqgrid.min.js"></script>
</head>
<body>
<table id="le_table"></table>
<div id="le_tablePager"></div>
</body>
</html>
Как видите в разметке есть еще дополнительный стиль. Этот стиль задает базовые параметры для отступов и самое главное размер шрифта! Если этого не сделать, то при использовании jQueryUI CSS Framework размер шрифта будет «не маленьким» и при этом различным в различных браузерах.
3) MySQL
Как бы мы не хотели, но в данной статье мы никак не сможем обойтись без базы данных. Поэтому я подготовил для вас дамп. Вы можете скачать его по этой ссылке или с моего домашнего сервера и экспортировать в любую БД (MySQL) например используя phpMyAdmin, у данного дампа есть один ньюанс. Аименно у некоторых названий городов «искаверкана» кодировка, т.е. проблема в дампе, но никак не в плагине!
В дампе сохранены 10тыс городов с кодами страны, региона, названием на англ., долготой, широтой, и nbit. Фактически это кусок одной таблицы БД распределения IP адресов в интернете. В принципе нам абсолютно не важно, что это будет за БД и для опытов подойдет и такая.
4) PHP
На данном этапе следует создать PHP скрипт, который будет возвращать таблице, запрашиваемую ею информацию. Вот пример такого скрипта для наших нужд
<?php
// Подключение и выбор БД
$db = mysql_connect('database_host', 'database_user',
'database_password');
mysql_select_db('database_name');
# ВНИМАНИЕ!!!
# Данный код не имеет проверок запрашиваемых данных
# что может стать причиной взлома!
# Обязательно проверяйте все данные
# поступающие от клиента
// Номер запрашиваемой страницы
$page = $_GET['page'];
// Количество запрашиваемых записей
$limit = $_GET['rows'];
// Номер элемента массива по которому
// следует производить сортировку
// Проще говоря поле, по которому
// следует производить сортировку
$sidx = $_GET['sidx'];
// Направление сортировки
$sord = $_GET['sord'];
// Если не указано поле сортировки,
// то производить сортировку по первому полю
if(!$sidx) $sidx =1;
// Выполним запрос, который
// вернет суммарное кол-во записей в таблице
$result = mysql_query("SELECT COUNT(*) AS count FROM cities");
$row = mysql_fetch_array($result,MYSQL_ASSOC);
// Теперь эта переменная хранит кол-во записей в таблице
$count = $row['count'];
// Рассчитаем сколько всего страниц займут данные в БД
if( $count > 0 && $limit > 0) {
$total_pages = ceil($count/$limit);
} else {
$total_pages = 0;
}
// Если по каким-то причинам клиент запросил
if ($page > $total_pages) $page=$total_pages;
// Рассчитываем стартовое значение для LIMIT запроса
$start = $limit*$page - $limit;
// Зашита от отрицательного значения
if($start < 0) $start = 0;
// Запрос выборки данных
$query = "SELECT id, country_code, region_code, city, latitude,
longitude, nbip FROM cities
ORDER BY ".$sidx." ".$sord." LIMIT ".$start.", ".$limit;
$result = mysql_query($query);
// Начало xml разметки
$s = "<?xml version='1.0' encoding='utf-8'?>";
$s .= "<rows>";
$s .= "<page>".$page."</page>";
$s .= "<total>".$total_pages."</total>";
$s .= "<records>".$count."</records>";
// Строки данных для таблицы
// Не забудьте обернуть
//текстовые данные в <![CDATA[]]>
while($row = mysql_fetch_assoc($result)) {
$s .= "<row id='". $row[id]."'>";
$s .= "<cell><![CDATA[". $row[country_code]."]]></cell>";
$s .= "<cell>". $row[region_code]."</cell>";
$s .= "<cell><![CDATA[". $row[city]."]]></cell>";
$s .= "<cell>". $row[latitude]."</cell>";
$s .= "<cell>". $row[longitude]."</cell>";
$s .= "<cell>". $row[nbip]."</cell>";
$s .= "</row>";
}
$s .= "</rows>";
// Перед выводом не забывайте выставить header
// с типом контента и кодировкой
header("Content-type: text/xml;charset=utf-8");
echo $s;
?>
5) Инициализация плагина
Последний этап подготовительных работ. Здесь мы должны инициализировать плагин JqGrid. Делается это вызовом метода jqGrid(), который в качестве параметра, принимает объект со свойствами таблицы.
Теперь давайте посмотрим на примере разметки, приведенной выше.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Осваиваем jqGrid с Linkexchanger</title>
<link rel="stylesheet" type="text/css" media="screen" href="css/flick/jquery-ui-1.7.2.custom.css" />
<link rel="stylesheet" type="text/css" media="screen" href="css/ui.jqgrid.css" mce_href="css/ui.jqgrid.css" />
<style>html, body {
margin: 0;
padding: 0;
font-size: 80%;
}
</style>
<script type="text/javascript" src="js/jquery-1.4.min.js"></script>
<script type="text/javascript" src="js/i18n/grid.locale-ru.js"></script>
<script type="text/javascript" src="js/jquery.jqgrid.min.js"></script>
<script type="text/javascript">
$(function(){
$('#le_table').jqGrid({
url:'p1e1.php',
datatype: 'xml',
mtype: 'GET',
colNames:['Код страны','Код региона', 'Город','Долгота','Широта','nbip'],
colModel :[
{name:'country_code', index:'country_code', width:80},
{name:'region_code', index:'region_code', width:80},
{name:'city', index:'city', width:90},
{name:'latitude', index:'latitude', width:60},
{name:'longitude', index:'longitude', width:60},
{name:'nbip', index:'nbip', width:30}],
pager: $('#le_tablePager'),
rowNum:10,
rowList:[10,20,30,100],
sortname: 'city',
sortorder: 'asc'
});
});
</script>
</head>
<body>
<table id="le_table></table>
<div id="le_tablePager"></div>
</body>
</html>
Cейчас можно взглянуть результаты наших трудов. Вот ссылка на просмотр ДЕМО1 и на архив с ДЕМО1 (тот же архив на зеркале)
III. Разбор параметров
Остался последний пункт сегодняшней статьи в котором я дам пояснения по каждому из используемых в данном примере свойств плагина.
Говоря о параметрах (options) следует сказать, что это лишь крохотная их часть. Эти параметры обеспечивают только базовую функциональность таблице. Множество других параметров мы с вами рассмотрим в последующих статьях, а пока поэкспериментируйте с теми что использованы в этом примере.
IV. Содержание следующей статьи
Выводы
В данной статье мы познакомились с плагином jqGrid, запустили его в базовой функциональности и создали полигон для будущих примеров.
В ходе работы мы поняли принцип работы плагина. Фактически сам плагин это интерфейс пользователя, который отправляет AJAX запросы серверу и получает от него ответ. Таблица отправляет все необходимые параметры, для выборки данных на стороне сервера, в виде GET запроса, а сервер возвращает в виде набора строк в XML-разметке.
Пожалуйста оставляйте только конструктивные комментария и пожелания, а все вопросы задавайте на форуме!
Отзывов (50) на «jqGrid Часть I: Знакомство»
Смысл в этой штуке будет только если будет инлайн-редактирование
Не стоит спешить с выводами, я ведь не рассказал еще и 10% того, что умеет это плагин. Будет редактирование однозначно, но где-то в 3-4 части
Частенько захожу в твой блог, очень полезный, но есть один вопрос: почему ты до сих пор не прикрутиш какой нибудь скрипт для нормального отображения исходных текстов?
Я, например, юзаю вот этот: SyntaxHighlighter.
А вообще, спасибо за инфу. Я как то уже разбирался с этим плагином, хотел в админку встроить, только пока отложил, возникли другие задачи
После сортировки по городам, в поле города умирает кодировка.
А какая кодировка у твоего сайта? У меня такая проблема была из-за того, что плагин написан в кодировке UTF-8, а сайт был на Windows-1251.
поддерживаю R@Me0, действительно прикрутите цветовое оформление исходников, будет очень хорошо. Хороший блог спасибо, также хотелось узнать у вас по поводу вашей книги, купил я книгу jQuery Подробное руководство по продвинутому Javascript, в принципе библия, хотелось бы узнать, ваша книга сможет как-то дополнить её? видел ещё одну книгу по jquery нашу.
Про подсветку кода – давайте считать, что «сапожник – без сапог»
ну, не попадаются нормальные плагины для WP…
Про книгу – правильно сделали, что «jQuery Подробное руководство по продвинутому Javascript» купили (там есть некоторые неточности перевода, но это не главное) – книга очень хороша! Насчет дополнить? Не знаю… Моя построена по такому принципу – практически каждый метод и вспомогательная функция jQuery показана на конкретном примере, который помогает понять суть. Это в первой части. Вторая часть – Плагины и UI посвящена конкретным плагинам (как официальному UI, так и плагинам сторонних разработчиков) и там подробно разбираются все их настройки, приводятся примеры использования (на диске). Можно считать это дополнением упомянутой книги? Пожалуй можно.
Да, и про эту статью – см. автора статьи – это первая статья, которая написана в моем блоге, но не мной.
Про подсветку кода – давайте считать, что “сапожник – без сапог” ну, не попадаются нормальные плагины для WP…
Не соглашусь. Тот плагин, что я упоминал (SyntaxHighlighter) хорошо работал на движке Блоггера. Я перенес свой блог на WP, там он тоже работает без проблем. Можешь Посмотреть в моем блоге. (на цвет не смотри. там 3 стандартных на выбор есть, я просто не поменял еще для нового диза).
По поводу книги “jQuery Подробное руководство по продвинутому Javascript”, полностью согласен. Она мне очень помогла, в свое время. Да и сейчас я частенько в нее заглядываю, т.к. в голове все удержать пока не получается.
Господа с кодировкогй все в порядке, точнее в порядке у плагина, то что вы видите это проблемы с кодировкой в дампе БД. Я ее скачал в сети и выдернул только первые 10тыс записей. Для того, чтобы без проблем можно было импортировать копи/пастом в phpMyAdmin, а не производить импорт 20Мб дампа через консоль.
>посоветовал цикл видео уроков Евгений Попова
Это уж чересчур.
>Это уж чересчур.
Отчего же? Я даже отвечу на этот вопрос … потому что НИКТО повторюсь НИКТО из «маститых» программистов ни сделал ни единого видео-урока для людей которые только что услышали слово jQuery и при этом не знают за что же схватится в начале пути изучения.
to mihdan – вы можете говорить так, после того как сделаете доступнее и подробнее чем Попов.
> для людей которые только что услышали слово jQuery и при этом не знают за что же схватится в начале пути изучения.
Так может, таким людям вообще не стоит начинать программировать? Если у человека есть необходимые мозги, он разберется сам. Если нет — не стоит и начинать. Цель настоящего обучения — научить человека учиться самому. Искать информацию, пробовать. Если он этого не умеет — ему не поможет никакой мега-разжеванный, доступный видеоурок ( бред вообще, неужели народ читать уже разучился? )
>НИКТО из “маститых” программистов ни сделал ни единого видео-урока для людей которые только что услышали слово jQuery<
Gennady а правда почему бы и нет… jQuery набирает популярность, а рынок пока не занят…
e1f, уважайте труд чужих людей. Если вы так категоричны, запишите сами видео-урок и покажите всем, как по вашему надо.
Не можете?
Ну так и не стоит в чём то упрекать людей, которые это СМОГЛИ.
Regent, бесполезный, более того, вредный труд нельзя уважать.
e1f, не вам решать, бесполезный труд или нет. Если существует хотя бы один благодарный человек – труд полезный.
А вы продолжайте дальше не уважать.
а вот и продолжение от меня подоспело
http://mabp.kiev.ua/2010/01/31/jqgrid-plugin/
Расписали неплохо, я сам, если честно, мало что ещё в этом понимаю, но хочу научиться… Но думаю мне будет легче когда будут перед глазами все части, я конечно и так очень вам признателен, что рассказали очень полезную информацию, но всё таки хочу спросить когда ожидать следущие части?
2 часть уже в процессе, много времени уходит на подготовку и проверку демо-примеров. Дай бог мне здоровья … вторую часть опубликую к выходным
будет очень хорошо, хотя и у самого если честно то времени очень мало, но стараюсь всё равно следить за вашим блогом
Дорогие читатели, в связи с работами по обновлению блога публикация статьи «jqGrid II» как впрочем и работы других авторов, временно приостановлены. В ближайшее время мы постараемся решить все технические вопросы и продолжим трудиться над новыми материалами.
пол года рассматривал этот плагин jqGrid, уже хотел его применить в своём проекте, как тут же обнаружил некоторые не достоинства, к примеру таблица не может растягиваться, хотя есть костыли, но это не спасает. Нельзя эту таблицу поместить к примеру в ячейку всё что идёт после ней пропадает подней, тоесть сбоку напротив таблици ничего нельзя поместить, а я хотел чтобы сама таблица была в левой части а другая инфа с правой, сделать этого не удалось. Последняя версия полностью привязана к UI чего я не люблю, эти громадные классы css, js хотя можно выбрать отделить нужное, но всё равно получается не удобно. Да и таблицу сильно не изменишь под себя.
Вообщем моё мнение слишком громадная таблица получается. Для себя я выбрал по проще
http://yii.cubedwater.com/user/list
Обсуждение можно продолжить на форуме jQuery.
Прошу очень обратить внимание в статье, что файл локализации необходимо подключать до файла плагина, а то я вот подключил наоборот (случайно), а потом полдня разбирался почему jqGrid не работает
Это платный плагин. Скачать можно jqGrid Trial Downloads (30-day trial). Неужели все платили за него?
Хм… Может вы что-то перепутали?
jqGrid 3.7.1 Downloads (Free, Open Source package)
я тут смотрел: http://www.trirand.net/download.aspx
Здравствуйте! Очень понравилась Ваша статья. Попытался возпроизвести это все у себя на ПК. Что-то не хочет работать. Отображается таблица, но она пустая, в процессе выполнения скрипта ошибки отсутсвуют. Подскажите в чем может быть проблема?
Скорее всего вы что-то забыли в серверном скрипте. Пожалуйста задавайте вопросы на форуме
Геннадий, статья замечательная…. Вот только с Jquery Grid бывают неприятные особенности. Когда применяеться плагин сортировки по строкам или столбцам, он создаеться динамически. И все вставленные туда сторонним кодом элементы исчезают. Как можно этого избежать?
Пожалуйста, все технические вопросы по статьям задавайте на форуме. Это намного удобнее всем.
Вопрос такой- можно ли (и как) сделать, что бы был постоянный мониторинг данных.
Т.е. что бы производилась ajax-подгрузка измененных данных в таблицу.
Попробовал настроить у себя но данные не выдает хотя XML данные до браузера приходят а в Гриде не отоброжаются
Внимательно читаем комментарий №31!
Я начинающий кодер. Но у меня при работа с БД PostgreSQL в PHP через pg_fetch_object текстовые данные помещать в <![CDATA[]] не надо… Кодировка UTF-8 и в БД и в коде…
в пункте 4) PHP в примере кода опечатка:
// Номер запрИшиваемой страницы
Спасибо поправил! Хотя и не критично, на то они и комментарии
Большое спасибо за статью (цикл)! Мне как новичку очень понравилось, хочется сделать для бухов прогу (правда не знаю как) без изучения Делфи, КодеГеар и т.п. в локалке без выхода в Инет типа на Денвере. Не скажете, я на верном пути? Спасибо!
Помогите плз, ругается на эту строку:
$(function()
вот так:
Unhandled Exception (parser.compile)
/var/www/html/grid/www/index.html(21:10): syntax error, unexpected ‘(‘
Ищите синтаксическую ошибку в своем коде…
Пожалуйста, все технические вопросы по статьям задавайте на форуме. Это намного удобнее всем.
Спасибо, весьма познавательно. Хотел заметить, что для корректной работы с БД в формате ЮТФ8 нужно перед запросом на выборку послать команду «mysql_query(«set names ‘utf8′») or die(mysql_error()); «. В данном примере с городами часто вылезает ошибка в XML если этого не сделать.
Тут многие пишут не совсем вернык вещи. Например «mysql_query(«set names ‘utf8′»)» нужно писать, если вы раотаете именно с кодировкой UTF-8, в других случаях это приведет к ошибкам.
Про функционал и ненадобность.. Сразу хочу отметить, что для написания собственного модуля работы с таблицами вам поребуется весьма большое количество времени. С этим плагином вы сможете практически все, что вам потребуется – огромное количество событий уже отлавливается, остается лишь только подставить свою функцию. А оформление вы можете изменить сами, помимо этого на сайте jqueryUI – вы сможете даже настроить эту тему оформления по своему вкусу, не внедряясь в глубины css и не отрисовывая картинки.
По поводу редактирования тоже скажу:
– Поддержка редактирования во всплывающих окошках – которые сами генерируются.
– Поддержка редактирования прямо в таблице.
Поддержка поиска и многое другое!
Здравствуйте,
Заинтересовался данным плагином и успешно смог настроить базовый функционал, но есть небольшая проблема.
У меня большое количество столбцов и во всю ширину таблица не умещается на странице. Подскажите, пожалуйста, как добавить горизонтальную прокрутку, ограничив таблицу 900px по ширине, например.
Спасибо заранее.
Похоже сам справился =)
Если у кого возникнет вопрос, установите параметры следующим образом:
shrinkToFit: false,
width: 900,
Добрый день!
Я столкнулся со следующей проблемой.
Объявил все стили и js-ы:
Прописал всё, как говорилось:
$(document).ready(function() {
…
jQuery(«#list4″).jqGrid({
datatype: «local»,
height: 250,
colNames: ['Inv No', 'Date', 'Client', 'Amount', 'Tax', 'Total', 'Notes'],
colModel: [
{ name: 'id', index: 'id', width: 60, sorttype: "int" },
{ name: 'invdate', index: 'invdate', width: 90, sorttype: "invdate" },
{ name: 'name', index: 'name', width: 100 },
{ name: 'amount', index: 'amount', width: 80, align: "right", sorttype: "float" },
{ name: 'tax', index: 'tax', width: 80, align: "right", sorttype: "float" },
{ name: 'total', index: 'total', width: 80, align: "right", sorttype: "float" },
{ name: 'note', index: 'note', width: 150, sortable: false }
],
pager: $(‘#list4_Pager1′),
rowNum: 10,
rowList: [10, 20, 30, 100],
multiselect: true,
caption: «Manipulating Array Data»
});
var mydata = [
{ id: "1", invdate: "2007-10-01", name: "test", note: "note", amount: "200.00", tax: "10.00", total: "210.00" },
{ id: "2", invdate: "2007-10-02", name: "test2", note: "note2", amount: "300.00", tax: "20.00", total: "320.00" },
{ id: "3", invdate: "2007-09-01", name: "test3", note: "note3", amount: "400.00", tax: "30.00", total: "430.00" },
{ id: "4", invdate: "2007-10-04", name: "test", note: "note", amount: "200.00", tax: "10.00", total: "210.00" },
{ id: "5", invdate: "2007-10-05", name: "test2", note: "note2", amount: "300.00", tax: "20.00", total: "320.00" },
{ id: "6", invdate: "2007-09-06", name: "test3", note: "note3", amount: "400.00", tax: "30.00", total: "430.00" },
{ id: "7", invdate: "2007-10-04", name: "test", note: "note", amount: "200.00", tax: "10.00", total: "210.00" },
{ id: "8", invdate: "2007-10-03", name: "test2", note: "note2", amount: "300.00", tax: "20.00", total: "320.00" },
{ id: "9", invdate: "2007-09-01", name: "test3", note: "note3", amount: "400.00", tax: "30.00", total: "430.00" },
{ id: "10", invdate: "2007-11-01", name: "test4", note: "note3", amount: "400.00", tax: "40.00", total: "440.00" },
{ id: "11", invdate: "2007-11-02", name: "test3", note: "note3", amount: "400.00", tax: "35.00", total: "440.00" },
{ id: "12", invdate: "2007-11-03", name: "test5", note: "note3", amount: "400.00", tax: "10.00", total: "440.00" },
{ id: "13", invdate: "2007-11-04", name: "test5", note: "note3", amount: "400.00", tax: "100.00", total: "450.00" },
{ id: "14", invdate: "2007-11-05", name: "test2", note: "note3", amount: "400.00", tax: "50.00", total: "410.00" },
{ id: "15", invdate: "2007-11-06", name: "test", note: "note3", amount: "400.00", tax: "60.00", total: "460.00" },
{ id: "16", invdate: "2007-11-07", name: "test5", note: "note3", amount: "400.00", tax: "10.00", total: "420.00" },
{ id: "17", invdate: "2007-11-09", name: "test4", note: "note3", amount: "400.00", tax: "80.00", total: "420.00" },
{ id: "18", invdate: "2007-11-10", name: "test4", note: "note3", amount: "400.00", tax: "80.00", total: "420.00" },
{ id: "19", invdate: "2007-11-11", name: "test4", note: "note3", amount: "400.00", tax: "80.00", total: "420.00" },
{ id: "20", invdate: "2007-11-12", name: "test4", note: "note3", amount: "400.00", tax: "80.00", total: "420.00" }
];
for (var i = 0; i <= mydata.length; i++)
jQuery("#list4").jqGrid('addRowData', i + 1, mydata[i]);
});
Когда я комментирую строку:
pager: $(‘#list4_Pager1′)
всё нормально, только, понятное дело, навигационного бара нет.
Однако, если данную строку раскомментировать, то браузеры выдают ошибку:
«Ошибка: Не удалось получить значение свойства «integer»: значением объекта является NULL или он не определен»
и таблица вырисовывается пустой. Только заголовок, ожидаемый навигационный бар и … сообщение в центре «пустой» таблицы: «undefined».
Спасите утопающего, плз. Может кто сталкивался с такой проблемой…
=======================================
И ещё одно!!!
На официальном сайте (http://trirand.com/blog/jqgrid/jqgrid.html#) в примере Loading Data -> Array Data прописано
{name:’invdate’,index:’invdate’, width:90, sorttype:»date»}
на что также браузеры ругались, пока я не заменил sorttype на «invdate»:
{ name: ‘invdate’, index: ‘invdate’, width: 90, sorttype: «invdate» }
Сорри.
Ответ на мой вопрос оказался во второй части Ваших статей (jqGrid Часть II: Базовые возможности):
«2) Загрузка данных в виде массива … в свойствах инициализации jqGrid вы не найдете параметров панели-листалки, потому что данные уже загружены и нет необходимости запрашивать их порциями.»
Ну а что, если и в этом случае я хочу организовать постраничную навигацию?
Давайте договоримся на будущее: все технические вопросы – на форум jQuery.
А пока, просто посмотрите примеры и документацию – легко найдете, как организовать панельку навигации.
Я очень рад, что нашел Ваши статьи про jqGrid. Я не программист, но, бывает и так, что такие вещи интересуют не только программеров, и не с целью стать программером, – разбираться с англ.документацией для программеров для меня не лучший вариант. Но заметил пару досадных мелочей, которые возможно будет не слишком сложно устранить, что приблизит публикацию еще ближе к идеалу
1. Мне лишь с большим трудом удалось добраться (разыскать) до остальных 2х частей публикации – нигде на этой странице на них нет ссылок (либо они нетривиально замаскированы) … 2. В приведенной для контроля структуре размещения файлов отсутствует самый главный – опорный файл с HTML-разметкой, а ведь именно относительно его необходимо правильно расположить все остальное … 3. В первой фразе под самым первым окошком с кодом «Как видите самый незаурядный код чистой страницы, где …», Вы очевидно имели ввиду как раз «самый заурядный», а написали наоборот …
Не работают примеры…
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given
Ни на тестовом сервере, ни на реальном хостинге, везде одна и та же ошибка. Перепробовал уже все что можно.
Наверное все-таки стоило написать – «у меня не работают примеры», да?
Оставьте отзыв