ParamQuery grid support forum

General Category => Help for ParamQuery Pro => Topic started by: Ajay on December 06, 2016, 02:37:45 pm

Title: Unable to get event used for sorting
Post by: Ajay 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.
Title: Re: Unable to get event used for sorting
Post by: paramvir 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.