Sigma Php Ajax framework, Ajax Components, GUI Builder
May 23, 2012, 03:13:42 AM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News:
 
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: Problem in sorting date format  (Read 1680 times)
redhat
Jr. Member
**
Posts: 19


View Profile
« on: July 20, 2009, 04:20:14 AM »

How to sort in sigma grid in date format

Eg: in the grid i have the value as
06-Jun-2007
01-Jun-2007
07-Jun-2007
08-May-2008
27-Mar-2009
16-Jun-2007

but , if we sort we get values as
01-Jun-2007
06-Jun-2007
07-Jun-2007
08-may-2008
16-Jun-2007
27-Mar-2009

That is it is getting sorted only based on the date (01,06) numbers only it is not sorted based on the month and year

kindly helpme in solving this problem
Logged
steven
Moderator
Hero Member
*****
Posts: 544



View Profile
« Reply #1 on: July 20, 2009, 07:01:52 PM »

Do a customized sorting. Search forum for more
Logged

Sigma AJAX Data Grid - Easy to Integrate with PHP, ASP Classic, ASP.NET & Java
Sigma PHP Ajax Framework - WYSIWYG GUI Builder With Tree, Grid, Treegrid, Dialog, Tab & More Component
vijay4281
Newbie
*
Posts: 2


View Profile
« Reply #2 on: July 28, 2009, 03:32:26 AM »

Hi,

  I also faced this problem, I just customized the script which are given, Now it's working fine so please try this solution, i hope it will work out.


In aspx page :

Add a type property for which field you wanna sort
 
{name : 'DateOfJoining',type:'date'  },


In gt_grid_all.js :

convert:function(_,$){
 
    switch($){
    case "int":
      return parseInt(_);
    case "float":
      return parseFloat(_);
    case "date":
      return Date.parseDate(_,'%d-%M-%y');
    default:
      return _;
    }



Include Date.parseDate function along with parameters respectively Date and Format which you want.

return Date.parseDate(_,'%d-%M-%y');

In calendar.js :


Modify the function like this

Date.parseDate = function(str, fmt) {
   var today = new Date();
   var y = 0;
   var m = -1;
   var d = 0;
   var a = str.split(/\W+/);
   var b = fmt.match(/%./g);
   var i = 0, j = 0;
   var hr = 0;
   var min = 0;
   for (i = 0; i < a.length; ++i) {
      if (!a)
         continue;
      switch (b) {
          case "%d":
          case "%e":
         d = parseInt(a, 10);
         break;

          case "%M":
           switch(a)
           {
             case "Jan":
                 m=1;break;
                 case "Feb":
                 m=2;break;
                 case "Mar":
                 m=3;break;
                 case "Apr":
                 m=4;break;
                 case "May":
                 m=5;break;
                 case "Jun":
                 m=6;break;
                 case "Jul":
                 m=7;break;
                 case "Aug":
                 m=8;break;
                 case "Sep":
                 m=9;break;
                 case "Oct":
                 m=10;break;
                 case "Nov":
                 m=11;break;
                 default:
                 m=12; break;
                
           }
         break;

          case "%Y":
          case "%y":
         y = parseInt(a, 10);
         (y < 100) && (y += (y > 29) ? 1900 : 2000);
         break;

          case "%b":
          case "%B":
         for (j = 0; j < 12; ++j) {
            if (Calendar._MN[j].substr(0, a.length).toLowerCase() == a.toLowerCase()) { m = j; break; }
         }
         break;

          case "%H":
          case "%I":
          case "%k":
          case "%l":
         hr = parseInt(a, 10);
         break;

          case "%P":
          case "%p":
         if (/pm/i.test(a) && hr < 12)
            hr += 12;
         else if (/am/i.test(a) && hr >= 12)
            hr -= 12;
         break;

          case "%M":
         min = parseInt(a, 10);
         break;
      }
   }
   if (isNaN(y)) y = today.getFullYear();
   if (isNaN(m)) m = today.getMonth();
   if (isNaN(d)) d = today.getDate();
   if (isNaN(hr)) hr = today.getHours();
   if (isNaN(min)) min = today.getMinutes();
   if (y != 0 && m != -1 && d != 0)
      return new Date(y, m, d, hr, min, 0);
   y = 0; m = -1; d = 0;
   for (i = 0; i < a.length; ++i) {
      if (a.search(/[a-zA-Z]+/) != -1) {
         var t = -1;
         for (j = 0; j < 12; ++j) {
            if (Calendar._MN[j].substr(0, a.length).toLowerCase() == a.toLowerCase()) { t = j; break; }
         }
         if (t != -1) {
            if (m != -1) {
               d = m+1;
            }
            m = t;
         }
      } else if (parseInt(a, 10) <= 12 && m == -1) {
         m = a-1;
      } else if (parseInt(a, 10) > 31 && y == 0) {
         y = parseInt(a, 10);
         (y < 100) && (y += (y > 29) ? 1900 : 2000);
      } else if (d == 0) {
         d = a;
      }
   }
   if (y == 0)
      y = today.getFullYear();
   if (m != -1 && d != 0)
      return new Date(y, m, d, hr, min, 0);
   return today;
};


In calendar-setup.js :

Change the format like this wherever applicable,

param_default("ifFormat",       "%d-%M-%y");
param_default("daFormat",       "%d-%M-%y");


Also this,

var ds = d.print("%Y%m%d");


Try this solution if you any doubt on this indeed Just mail me on bharathi.net@gmail.com

Thank You. Wink
Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!