Page 1 of 1

xBrowse ascending order

PostPosted: Wed Aug 07, 2013 6:44 pm
by Otto
xBrowse
I can’t remember how to fix XBrowse on ascending order when clicking on Header.
Thanks in advance
Otto

Re: xBrowse ascending order

PostPosted: Thu Aug 08, 2013 2:10 am
by nageswaragunupudi
When we click on header of an unsorted column, it will be sorted in Ascending Order. If we click again on the header of a sorted column, the order keeps toggling between ascending and descending.

Re: xBrowse ascending order

PostPosted: Thu Aug 08, 2013 3:59 am
by ShumingWang
oCol := obrow1:AddCol()
oCol:bStrData := {||odb1:startdate}
oCol:cHeader := "创建日期"

oCol:cOrder := "A"
oCol:nHeadBmpNo := 1
oCol:bLClickHeader := {|r,c,f,o| ::bas1205( r,c,o) }

...


method bas1205(nrow,ncol,oCol) class bas12class

local aCols,cOrder,nFor,nLen
local nat,id1
aCols := oCol:oBrw:aCols
cOrder := oCol:cOrder
nAt := oCol:nCreationOrder
nLen := LEN(aCols)

for nFor := 1 to nLen
aCols[ nFor ]:nHeadBmpNo := 0
aCols[ nFor ]:cOrder := ""
next

do case
case nAt==1
id1:=::odb1:custid
::odb1:cQuery:="select * from custm1 order by custid"+if(corder=="A"," desc","")
::odb1:refresh()
::obrow:refresh()
::obrow:bseek:={|v|::odb1:SEEK(v,,{||::odb1:custid})}
::obrow:SEEK(id1)
case nAt==3
id1:=::odb1:custm
::odb1:cQuery:="select * from custm1 order by custm"+if(corder=="A"," desc","")
::odb1:refresh()
::obrow:refresh()
::obrow:bseek:={|v|::odb1:SEEK(v,,{||::odb1:custm})}
::obrow:SEEK(id1)
case nAt==5
id1:=::odb1:sales
::odb1:cQuery:="select * from custm1 order by sales"+if(corder=="A"," desc","")
::odb1:refresh()
::obrow:refresh()
::obrow:bseek:={|v|::odb1:SEEK(v,,{||::odb1:sales})}
::obrow:SEEK(id1)
case nAt==6
id1:=::odb1:addrc
::odb1:cQuery:="select * from custm1 order by addrc"+if(corder=="A"," desc","")
::odb1:refresh(.t.)
::obrow:refresh()
::obrow:bseek:={|v|::odb1:SEEK(v,,{||::odb1:addrc})}
::obrow:SEEK(id1)
endcase
if nat==1.or.nat==3.or.nat==5.or.nat==6
if cOrder == "" .or. cOrder == "D"
oCol:cOrder := "A"
oCol:nHeadBmpNo := 1
else
oCol:cOrder := "D"
oCol:nHeadBmpNo := 2
endif
end


return

Re: xBrowse ascending order

PostPosted: Thu Aug 08, 2013 5:51 am
by Otto
Thank you for your help.

Mr. Rao is it possible to switch off toggling.
Thanks in advance
Otto

Re: xBrowse ascending order

PostPosted: Thu Aug 08, 2013 6:22 am
by nageswaragunupudi
Mr Otto

We have not provided for disabling toggling.
Do you want to disable toggling globally for the entire project or for selected browses only?

Re: xBrowse ascending order

PostPosted: Thu Aug 08, 2013 12:36 pm
by Rick Lipkin
Otto

I believe you can just omit AUTOSORT when you create your browse ... if I recall that disables the header click to sort.

Rick Lipkin

Re: xBrowse ascending order

PostPosted: Thu Aug 08, 2013 1:50 pm
by nageswaragunupudi
Mr Rick

He wants autosort.
What he does not want is descending sort.
I shall help when he explains to me whether he wants to suppress Descending sort globally or for selected browses. i shall think of introducing a switch for that purpose.

Re: xBrowse ascending order

PostPosted: Fri Aug 09, 2013 7:40 am
by Otto
Dear Mr. Rao,
to suppress toggling for a single browser would be fine for me.
Thanks in advance
Otto

Re: xBrowse ascending order

PostPosted: Sun Aug 11, 2013 5:09 am
by nageswaragunupudi
Mr Otto

Please introduce new DATA by adding this line in the class declaration section of xbrowse.prg

Code: Select all  Expand view
DATA lSortDescend AS LOGICAL INIT .t.
 

Desirable position is next to DATA lAutoSort.

In the METHOD SetOrder CLASS TXBrwColumn, insert these three lines of code just after local declaration:
Code: Select all  Expand view
  if ::cOrder == 'A' .and. ! ::oBrw:lSortDescend
      return .f.
   endif
 

For whichever browse, you do not want descend sort, please set
oBrw:lSortDescend := .f.