powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / jQuery jqGrid: итог по колонке. Есть из json, нужно - из XML.
4 сообщений из 4, страница 1 из 1
jQuery jqGrid: итог по колонке. Есть из json, нужно - из XML.
    #37899510
Фотография Chop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В гриде нужно сделать "итог по колонке"...
Есть дока и пример с использованием 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
jQuery jqGrid: итог по колонке. Есть из json, нужно - из XML.
    #37899528
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Loading Data -> XML Data
2) Скачать через XHR, насладиться доступом, трансформировать в array и в конце Loading Data -> Array Data
...
Рейтинг: 0 / 0
jQuery jqGrid: итог по колонке. Есть из json, нужно - из XML.
    #37899880
Фотография Chop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy...
если бы я хотел использовать вариант XML Data или Array Data, так бы и сделал
но у меня - datatype: "XML" ,
и с точки зрения банальной эрудиции я предполагаю,
что функционал плагина одинаков для любого "источника данных"
поэтому все-таки хотелось бы получить ответ на мой вопрос,
а не рассказы о том как сделать по другому :)
...
Рейтинг: 0 / 0
jQuery jqGrid: итог по колонке. Есть из json, нужно - из XML.
    #37900758
Фотография Chop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашелся ответ, ларчик просто открывался. Может еще кому пригодиться :)
источники: источник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
4 сообщений из 4, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / jQuery jqGrid: итог по колонке. Есть из json, нужно - из XML.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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