JQGrid: загрузка данных в нижний колонтитул - PullRequest
7 голосов
/ 12 мая 2010

Есть ли примеры загрузки данных в нижний колонтитул? Я не могу их найти, или меня блокируют на работе.

Заранее спасибо ...

Ответы [ 2 ]

17 голосов
/ 12 мая 2010

Посмотрите на демо http://trirand.com/blog/jqgrid/jqgrid.html

и выберите в левом дереве " Новое в версии 3.5 ", а затем " Summary Footer Row ".

В этом примере установлена ​​опция footerrow : true, userDataOnFooter : true jqGrid. Затем сервер добавляет блок userdata к данным, отправленным обратно в jqGrid. Вы можете прочитать о userdata в http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data. Если userdata свойства блока шляпы соответствуют именам столбцов jqGrid, данные будут отображены в строке нижнего колонтитула.

Если вам нужна дополнительная информация, вы должны написать, какой тип данных вы используете в jqGrid (JSON, XML, xmlstring, jsonstring, локальный и т. Д.) И какой тип сервера вы используете (PHP, ASP.NET MVC, WCF конец так далее).

ОБНОВЛЕНО: если вы используете стандартное json-отображение данных (без опции jsonReader в jqGrid) с сервера, это выглядит как

{ 
  total: "xxx", 
  page: "yyy", 
  records: "zzz",
  rows : [
    {id:"1", cell:["cell11", "cell12", "cell13"]},
    {id:"2", cell:["cell21", "cell22", "cell23"]},
      ...
  ]
}

Таким образом, данные не имеют названия столбцов из colModel. Если у вас есть, например, один столбец {name: 'price', ...} внутри colModel и вы хотите показать общую цену в последней строке jqGid, вы должны определить footerrow: true, userDataOnFooter: true внутри опций jqGrid, и ваш сервер должен производить данные как

{ 
  total: "xxx", 
  page: "yyy", 
  records: "zzz",
  rows : [
    {id:"1", cell:["cell11", "cell12", "cell13"]},
    {id:"2", cell:["cell21", "cell22", "cell23"]},
      ...
  ],
  userdata: {price:1240.00} 
}

Если вы используете другой jsonReader, все статистические данные не изменятся. Единственное, что вы можете определить, это изменить имя «userdata» на другое имя, но значение должно быть объектом с именем поля, как вы определили в colModel. Только значения этих полей будут показаны жирным шрифтом в последней строке jqGrid.

4 голосов
/ 10 мая 2011

Ответ выше очень помогает. В любом случае, вот как я это сделал в MVC.Net:

Сначала это атрибуты по определению сетки:

нижний колонтитул: правда, userDataOnFooter: true

В результате действия на HttpPost:

        [HttpPost]
        public ActionResult GetNewMembersByDate(string date1, string date2)
        {
            List<uspGetNewByDateResult> list =_reportsRepository.GetNewByDate(DateTime.Parse(date1), DateTime.Parse(date2));

            var amount = from p in list
                         select p.Quantity;


            var jsonData = new
            {
                total = 1,
                page = 1,
                records = list.Count(),
                userdata = new
                    {
                        Name = "Total:",
                        Quantity= amount.Sum().ToString()
                    },
                rows = (
                        from row in list
                        select new
                        {
                            i = row.RowNumber,
                            cell = new[] {
                                row.RowNumber.ToString(),
                                row.Name,
                                row.Quantity.ToString()
                            }
                        }).ToArray()

            };
            return Json(jsonData);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...