Nano Hash - криптовалюты, майнинг, программирование

Сортировка на стороне сервера jqGrid с группировкой

У меня jqGrid работает с группировкой. Сортировка и разбиение данных на страницы выполняется на стороне сервера, потому что у меня слишком много строк, поэтому loadonce для меня не вариант. Проблема, с которой я столкнулся, заключается в том, что параметр sidx, переданный серверу, неверен (он также содержит параметр sord и дублированный sidx), поэтому сервер не может найти этот столбец в таблице.

Я понял, если прокомментирую группировку, sord и sidx вернутся в норму.

Это мой код:

jQuery("#grid-destinations").jqGrid({
  url:'destinations',
  datatype: "json",
  colModel:[
            {name:'id', hidden:true},
            {name:'cliDestination', jsonmap: 'cliDestination.destinationDesc', index: 'cliDestination', label:'Destination', width:55},
            {name:'orgSub', jsonmap: 'orgSub.subscriptionId', label:'Client', width:55, summaryTpl:''},
            {name:'numCalls', label:'Calls', width:55, formatter:'number', summaryType:'sum'},
            {name:'orgSeconds', label:'Client Minutes', width:55, formatter:'number', summaryType:'sum'},
            {name:'aloc', label:'ALOC', width:55, formatter: 'number', summaryType:'avg', summaryRound: 2, summaryRoundType:'round'},
            {name:'currency', jsonmap: 'orgSub.btsAccount.accountCurrency.currencySymbol', label:'Currency', width:55, summaryTpl:''},
            {name:'saleRate', label:'Sell rate', width:55, summaryType:'avg', summaryRound: 4, summaryRoundType:'round'},
            {name:'income', label:'Income', width:55, summaryType:'sum'},
            {name:'purchaseRate', label:'Cost rate', width:55, summaryType:'avg', summaryRound: 4, summaryRoundType:'round'},
            {name:'cost', label:'Cost', width:55, summaryType:'sum'},
            {name:'profit', label:'Profit', width:55, summaryType:'sum'},
            {name:'percentageProfitIncome', label:'%Prof/Income', width:55, summaryType:'avg', summaryRound: 2, summaryRoundType:'round'}
        ],
  autowidth: true,
  gridview: true,
  viewrecords: true,
  sortname: "cliDestination",
  sortorder: "asc",
  rowNum:100,
        rowList:['All','100','500','1000'],
        pager: '#pager-destinations',
        emptyrecords: "Nothing found to display",
        jsonReader: {
            root: 'content',
            id: 'id',
            repeatitems: false,
            total: 'totalPages',
            records: 'totalElements'
        },
  // grouping
  grouping:true, 
  groupingView : { 
      groupField : ['cliDestination'],
      groupCollapse: true,
      groupSummary: true,
      groupSummaryPos: "header"
  }
}).jqGrid('navGrid','#pager-destinations', {
        edit: false,
        view: false,
        add: false,
        del: false
    }, 
    { }, // edit options
    { },// add options
    { },// del options
    { }, // search options 
    { } // view options
    ).jqGrid('setGridHeight', $("#page").height() - 175);
}

Группирую данные по cliDestination. cliDestination - это еще один объект с идентификатором и описанием, поэтому в таблице я вижу описание из-за свойства jsonmap. Я хочу, чтобы данные также упорядочивались с помощью cliDestination.destinationDesc.

Это отправляет на сервер параметр sidx как «cliDestination asc, cliDestination» и sord как «asc». Когда я комментирую конфигурацию группировки, sidx - это cliDestination, а sord - asc, как и должно быть.

Есть идеи, что здесь происходит?

Спасибо

08.08.2014

Ответы:


1

Я решил это. Я понял, что когда вы группируете и данные являются удаленными, jqGrid изменяет sidx на groupByColumn sord, orderByColumn. Мне пришлось управлять этой информацией на сервере, чтобы получить из sidx orderByColumn и использовать ее для упорядочивания данных.

11.08.2014
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..