Sorting Columns

Hakan at Exformedia.se Hakan at Exformedia.se
Wed Mar 4 05:56:51 EST 2015


There is a lession on how to format your display here:

http://lessons.runrev.com/m/datagrid/l/7327-how-do-i-override-the-default-behavior-for-rendering-data-to-a-cell

In short you need to override the default behavior of the datagrid column:

1. Create a new button and select it
2. Copy the default behavior script to your button via:
     set the script of the selectedobject to the script of button 
"Default Column" of stack "revDataGridLibrary"
3. Tell the datagrid to use your behavior instead via:
    set the dgProps["default column behavior"] of group "Your data grid" 
to the long id of the selectedObject
4. Edit the script of your button

What you need look for is the fillInData function

Let say you want to display your big sales number as $ 1.000.000 (but 
still have the value saved as 1000000) you can change fillInData to

on FillInData pData
    set the text of me to formatNumber(pData, ",", ".", "$ ")
end FillInData

Then you only need to add the formatNumber function...

function formatNumber pNum, pSeparator, pCommaSign, pPrefix, pPostfix
    local tIsNegative, tRest, tCommaPos
    if pNum < 0 then
       put abs(pNum) into pNum
       put true into tIsNegative
    end if
    put offset(pCommaSign, pNum) into tCommaPos
    if tCommaPos > 0 then
       put char tCommaPos to -1 of pNum into tRest
    end if
    put char 1 to tCommaPos -1 of pNum into pNum
    repeat with i = length(pNum)-3 to 3 step -3
       put pSeparator before char i+1 of pNum
    end repeat
    if tIsNegative then
       return pPrefix & "-" &  pNum & tRest & pPostfix
    else
       return pPrefix & pNum & tRest & pPostfix
    end if
end formatNumber

Finally if you just want to target a specific column for your formatting 
you can use the dgColumn property (or dgColumnNumber) to ensure you only 
format specific columns

Let's say you have a column named "Value" that you would like to format 
but no other columns you can change fillInData to:

on FillInData pData
    put the dgColumn of me into tCol
    if tCol is "Value" then
       set the text of me to formatNumber(pData, " ", ".", "$ ")
    else
       set the text of me to pData
    end if
end FillInData

Happy Coding!

:-Håkan

> Bob Sneidar <mailto:bobsneidar at iotecdigital.com>
> 4 mars 2015 01:13
> dgData returns an array. dgText returns delimited text. if the commas 
> are thousand delimiters, then strip them. I’ve often thought of trying 
> to implement a “displayAs functionality for Datagrids, like Excel 
> does, where the value is one thing but the display is another. Your 
> situation really underscores the need for this.
>
> Bob S
>
>
> On Mar 3, 2015, at 06:18 , dunbarx at aol.com<mailto:dunbarx at aol.com> wrote:
>
> An easy way is to extract the full dataset, perhaps with the "dgData". 
> This will give you a tab and return delimited list. Then you might 
> sort by a function:
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your 
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
> dunbarx at aol.com <mailto:dunbarx at aol.com>
> 3 mars 2015 15:18
> An easy way is to extract the full dataset, perhaps with the "dgData". 
> This will give you a tab and return delimited list. Then you might 
> sort by a function:
>
>
> sort yourData numeric by goodNumber(item columnOfInterest of each)
>
>
> where:
>
>
> function goodNumber var
> repeat for each char tChar in var
> if var is in "0123456789" then put tChar after temp
> end repeat
> return temp
> end goodNumber
>
>
> Craig Newman
>
>
>
> -----Original Message-----
> From: JB <sundown at pacifier.com>
> To: How to use LiveCode <use-livecode at lists.runrev.com>
> Sent: Tue, Mar 3, 2015 6:33 am
> Subject: Sorting Columns
>
>
> I have a data grid and one of the columns
> has numbers with commas included. If I
> use the property inspector and select the
> header column I can choose sort by text
> or numeric. Due to the commas neither
> of the sort types gives me a correct sort.
>
> Do I need to make another array and strip
> the commas and then use that sort with
> columns from the original array? What is
> the best way to sort numeric columns with
> commas included in the numbers?
>
> John Balgenort
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your 
> subscription
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your 
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>
> JB <mailto:sundown at pacifier.com>
> 3 mars 2015 12:30
> I have a data grid and one of the columns
> has numbers with commas included. If I
> use the property inspector and select the
> header column I can choose sort by text
> or numeric. Due to the commas neither
> of the sort types gives me a correct sort.
>
> Do I need to make another array and strip
> the commas and then use that sort with
> columns from the original array? What is
> the best way to sort numeric columns with
> commas included in the numbers?
>
> John Balgenort
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your 
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>



More information about the use-livecode mailing list