Author Topic: Unable to get event used for sorting  (Read 2073 times)

Ajay

  • Pro Ultimate
  • Newbie
  • *
  • Posts: 31
    • View Profile
Unable to get event used for sorting
« on: December 06, 2016, 02:37:45 pm »
I am not able to get the datatype of the column,by which sorting is not happening correctly
Please find the code below

Code: [Select]
var records=[];

 records = JSON.parse($('#hiddenresults').val());
            $.each(records, function (i, data)
            {
                if (data.Name == "Main")
                    mainData = data;
            });

        var columnModel = [
                       {
                           title: "Name", dataIndx: "Name", width: 150, align: "left",
                           dataType: function (val1, val2) {
                               return stringSort(val1, val2);
                           }
                       },

                       {
                           title: "Interval", dataIndx: "Interval", width: 155, align: "left",
                           //dataType:"integer",
                           render: function (ui) {
                               var rowData = ui.rowData;
                               var isMain =rowData.UseMain;
                               var dataIndx = ui.dataIndx;
                               var cellData = rowData[dataIndx];
                               if (isMain == true)
                                   cellData = mainData.Interval;
                             
                               return "<span >" + cellData + "</span>";
                           },
                           
                           dataType: function (val1, val2) {
                               return stringSort(val1, val2);
                           }
                       },
                       {
                           title: "Exists", dataIndx: "HasValue", width: 100, align: "left",
                         
                           render: function (ui) {
                                var rowData = ui.rowData;
                                var dataIndx = ui.dataIndx;
                                var cellData = rowData[dataIndx];
                                var isMain =rowData.HasValue;
                                var hasVal = "No";
                                if (isMain == true) {
                                    if (mainData.HasValue)
                                        hasVal = "Yes";
                                }
                                else {
                                    if (cellData != undefined && cellData != null && cellData == true)
                                        hasVal = "Yes";
                                }

                                return "<span >" + hasVal + "</span>";
                           },
    dataType: function (val1, val2) {
                               return stringSort(val1, val2);
                           }
                       
                       }
                     
                       ];

        resultsGrid.pqGrid({
            width: 1000,
            height: 160,
            editable: false,
            showTop: false,
            showBottom: false,
            numberCell: false,
            roundCorners: false,
            wrap: false,
            colModel: columnModel,
            dataModel: { data: records },
            hoverMode: 'row',
            selectionModel: { type: 'row', mode: 'single' },
            virtualY: true,
            virtualX: true,
            rowSelect: function (event, ui) {
               
                    selectedRecord = ui.rowData;
               
            },
            refresh: function (evt, ui) {
                var $grid = $(this),
                   virtualY = $grid.pqGrid('option', 'virtualY'),
                   length = $grid.pqGrid('pageData').length,
                   val = (length > 50) || (length == 0);//any cutoff number in place of 20

                if (val !== virtualY) {
                    $grid.find(".pq-sb-vert").pqScrollBar("option", "steps", val);
                    $grid.pqGrid('option', 'virtualY', val).pqGrid('refresh');
                }
            }
        });


function  stringSort = function (val1, val2) {
        var c1 = $.trim(val1).toLowerCase();
        var c2 = $.trim(val2).toLowerCase();
        if (c1 > c2) {
            return 1;
        }
        else if (c1 < c2) {
            return -1;
        }
        else {
            return 0;
        }
    }

Please let me know how to capture sorting event in param query grid while initializing.

paramvir

  • Administrator
  • Hero Member
  • *****
  • Posts: 6307
    • View Profile
Re: Unable to get event used for sorting
« Reply #1 on: December 06, 2016, 03:02:53 pm »
I'm not sure about your question.

Do you need to sort the data while initialization of grid. What is your version of pqGrid.

In recent versions, column.sortType is used for custom sorting and sorter is stored in sortModel to apply initial sort to the data.

Also there are 2 events related to sorting: beforeSort and sort.