calendar field when filter used in UK

Hi,



we have a calendar field in a grid for date of birth. on that same field we have one of your filters (which puts a search box at the top of the column).



we are based in the UK and have used the following line of code to set the date format to show as dd/mm/yyyy



// set date format to (dd/mm/yyyy)

grid.setDateFormat(“d/m/y”);



this shows the date as we require it perfectly i.e. 23/01/2008



however when we do a search for a date in the columns search / filter box it works on the format of mm/dd/yyyy so to find this date we have to type 01/23/2008



how can we change it so that we can do a search for 23/01/2008 and it will find it, so to search on the format of dd/mm/yyyy



thanks very much



richard

Yes, the described situation is expected limitation of filters, while grid show formated output, filter use inner value - in you case it date in javascript format ( which is mm/dd/yyyy )
The problem can be resolved with next customization, just add next code to you page

dhtmlXGridObject.prototype._in_header_date_filter=function(t,i){
    t.innerHTML="";
    t.onclick=t.onmousedown = function(e){ (e||event).cancelBubble=true; return true; }
    t.onselectstart=function(){ return (event.cancelBubble=true); }
    this.makeFilter(t.firstChild,i);
    t.firstChild._filter=function(){ //this code format date
       temp=this.value.split("/");
       if (temp.length!=3) return “”;  //not complete date
       return temp[1]+"/"+temp[0]+"/"+temp[2]
    }
    this._filters_ready();
}

This code add one more auto-filter
    #date_filter
which will accept date in dd/mm/yyyy format

hi, great thanks very much i will try this

thanks again

hi

the only problem i see with this is as follows: in the code:

dhtmlXGridObject.prototype._in_header_date_filter=function(t,i){
    t.innerHTML="";
    t.onclick=t.onmousedown = function(e){ (e||event).cancelBubble=true; return true; }
    t.onselectstart=function(){ return (event.cancelBubble=true); }
    this.makeFilter(t.firstChild,i);
    t.firstChild._filter=function(){ //this code format date
       temp=this.value.split("/");
       if (temp.length!=3) return “”;  //not complete date
       return temp[1]+"/"+temp[0]+"/"+temp[2]
    }
    this._filters_ready();
   
   
    }

there is a line that says if temp.length!=3 then return ""

the problem is that it will only do a filter if i have put in at least dd/mm/ then it will do the filter - otherwise if i just type a year or a month then it wont do any filtering at all. whereas if i dont add this bit of code then it does start filtering no matter what i do

look forward to your reply, thanks

This line was added purposely to prevent sorting by incomplete date, you can modify it in any necessary way, for example

if (temp.length==2) return temp[1]+"/"+temp[0]
if (temp.length!=3) return “”;  //not complete date
       return temp[1]+"/"+temp[0]+"/"+temp[2]

which will allow filtering if you entered at least day and month

thanks for this, except on the normal date filter i can put in 03 and it filters the rows whether 03 is in the day, month, or year. this is the similar example i want. i want them to be able to type in anything and it finds it anywhere in the date column and filters out the rest. this is the normal behaviour, i want it to do this but on dd/mm/yyyy instead

as in the code you gave me, if they were type in just the year, it wouldnt filter anything but on the normal filter it would.

thanks

its ok i managed to do it by adding the code you gave me plus adding
if(temp.length==1) return this.value;