Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / jQuery jqGrid: итог по колонке. Есть из json, нужно - из XML. / 4 сообщений из 4, страница 1 из 1
31.07.2012, 18:44:17
    #37899510
Chop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jQuery jqGrid: итог по колонке. Есть из json, нужно - из XML.
В гриде нужно сделать "итог по колонке"...
Есть дока и пример с использованием json.
Нужно - с XML

Пример в доке. Ветка: New in version 3.5 --> Summary Footer Row

Выжимка из примера:

Java Scrpt code
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
jQuery("#...").jqGrid({ 
   url        : '...', 
   datatype   : "json", 
   colNames   : ['Inv No','Date','Client','Amount','Tax','Total','Notes'], 
   colModel   : [
      {name:'id'     , ...}, 
      {name:'invdate', ...},
      {name:'name'   , ...}, 
      {name:'amount' , ...},
      {name:'tax'    , ...},
      {name:'total'  , ...},
      {name:'note'   , ...}],
   pager      : '#..., 
   sortname   : 'id', 
   viewrecords: true, 
   sortorder  : "desc", 
   caption    : "JSON Example", 

   // подключаем строку итогов:
   footerrow : true, 
   userDataOnFooter : true
});


PHP with MySQL
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
...
$i=0; 
$amttot=0; 
$taxtot=0; 
$total=0; 
while($row = mysql_fetch_array($result,MYSQL_ASSOC)) { 
   $amttot += $row[amount]; 
   $taxtot += $row[tax];
   $total  += $row[total]; 
   $responce->rows[$i]['id']=$row[id]; 
   $responce->rows[$i]['cell']=array($row[id],$row[invdate],$row[name],$row[amount],$row[tax],$row[total],$row[note]); 
   $i++; 
} 
// в json пихаем данные итогов:
$responce->userdata['amount'] = $amttot; 
$responce->userdata['tax']    = $taxtot; 
$responce->userdata['total']  = $total; 
$responce->userdata['name']   = 'Totals:'; 
echo json_encode($responce);


Как (какой) сформировать XML, чтобы jqGrid автоматом подтянул данные - совершенно непонятно.
Методом научного тыка ничего не получилось.

Вопрос:
1. Какая структура XML должна быть? ( Можно ткнуть в РТФМ )
2. Как получить доступ в браузере к XML, который получает jqGrid? ( в этом случае итоги можно и руцями в грид запихать )
...
Рейтинг: 0 / 0
31.07.2012, 18:57:51
    #37899528
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jQuery jqGrid: итог по колонке. Есть из json, нужно - из XML.
1) Loading Data -> XML Data
2) Скачать через XHR, насладиться доступом, трансформировать в array и в конце Loading Data -> Array Data
...
Рейтинг: 0 / 0
01.08.2012, 09:22:53
    #37899880
Chop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jQuery jqGrid: итог по колонке. Есть из json, нужно - из XML.
Antonariy...
если бы я хотел использовать вариант XML Data или Array Data, так бы и сделал
но у меня - datatype: "XML" ,
и с точки зрения банальной эрудиции я предполагаю,
что функционал плагина одинаков для любого "источника данных"
поэтому все-таки хотелось бы получить ответ на мой вопрос,
а не рассказы о том как сделать по другому :)
...
Рейтинг: 0 / 0
01.08.2012, 17:02:52
    #37900758
Chop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jQuery jqGrid: итог по колонке. Есть из json, нужно - из XML.
Нашелся ответ, ларчик просто открывался. Может еще кому пригодиться :)
источники: источник1 , источник2

Указанный пример будет иметь вид:

PHP with MySQL
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
...
$resultXML = "<?xml version='1.0' encoding='utf-8'?>";
$resultXML .= "<rows>";
$resultXML .= "<page>"    . $page        . "</page>";
$resultXML .= "<total>"   . $total_pages . "</total>";
$resultXML .= "<records>" . $count       . "</records>";

$i      = 0; 
$amttot = 0; 
$taxtot = 0; 
$total  = 0; 
while($row = mysql_fetch_array($result,MYSQL_ASSOC)) { 
   $amttot += $row[amount]; 
   $taxtot += $row[tax];
   $total  += $row[total]; 

   $resultXML .= "<row>";
   $resultXML .= "<cell>" . $row[id]      . "</cell>";
   $resultXML .= "<cell>" . $row[invdate] . "</cell>";
   $resultXML .= "<cell>" . $row[name]    . "</cell>";
   $resultXML .= "<cell>" . $row[amount]  . "</cell>";
   $resultXML .= "<cell>" . $row[tax]     . "</cell>";
   $resultXML .= "<cell>" . $row[total]   . "</cell>";
   $resultXML .= "<cell>" . $row[note]    . "</cell>";
   $resultXML .= "</row>";
   $i++; 
} 
// в XML пихаем данные итогов:
$resultXML .= "<userdata name='amount'>" . $amttot . "</userdata>";
$resultXML .= "<userdata name='tax'>"    . $taxtot . "</userdata>";
$resultXML .= "<userdata name='total'>"  . $total  . "</userdata>";
$resultXML .= "<userdata name='name'>Totals:</userdata>";

echo $resultXML;


Атрибут " name " тега <userdata name='...'>...</userdata> должен соответствовать названию колонки в colModel


P.S.
Насколько понимаю, можно использовать не только название "userdata", оно дефаултное, но и любое свое.
Для этого достаточно в javascript добавить строку: userdata: "МОЯ_userdata" :
Код: javascript
1.
2.
3.
4.
5.
6.
7.
jQuery("#...").jqGrid({ 
   ...
   // подключаем строку итогов:
   footerrow : true, 
   userDataOnFooter : true,
   userdata: "МОЯ_userdata"
});

с-но в PHP:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
...
// в XML пихаем данные итогов:
$resultXML .= "<МОЯ_userdata name='amount'>" . $amttot . "</МОЯ_userdata>";
$resultXML .= "<МОЯ_userdata name='tax'>"    . $taxtot . "</МОЯ_userdata>";
$resultXML .= "<МОЯ_userdata name='total'>"  . $total  . "</МОЯ_userdata>";
$resultXML .= "<МОЯ_userdata name='name'>Totals:</МОЯ_userdata>";

echo $resultXML;


Но работает ли - не проверял.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / jQuery jqGrid: итог по колонке. Есть из json, нужно - из XML. / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]