Missing keys in datagrid?

Trevor DeVore lists at mangomultimedia.com
Wed Dec 18 07:28:46 EST 2019


On Wed, Dec 18, 2019 at 2:38 AM Klaus major-k via use-livecode <
use-livecode at lists.runrev.com> wrote:

> Hi Bob,
>
> > Am 18.12.2019 um 01:13 schrieb Bob Sneidar via use-livecode <
> use-livecode at lists.runrev.com>:
> >
> > If I recall a long time ago speaking with Trevor, printkeys() does not
> necessarily return ALL keys.
>
> AHA!
> OK, that explains something, but not all.
>
> Empty or not, this SHOULD list all keys, but doesn't?
>

One nice aspect of LiveCode is that you can inspect all of the code to see
what is going on behind the scenes. For PrintKeys you can get to the script
that has it in one of two ways:

edit script of behavior of behavior of selobj()
edit script of stack "RevDataGridLibraryBehaviorsDataGridButtonBehavior"

This is the PrintKeys handler:

```
command PrintKeys pArray
    if pArray is not an array then put sDataArray into pArray
    put _PrintKeys(pArray)
end PrintKeys
```

And here is the _PrintKeys() function:

```
private function _PrintKeys @pArray, pDimension
   if pDimension is empty then put 0 into pDimension

   local theKeys, theText, theTempArray
   put the keys of pArray into theKeys
   sort theKeys numeric

   repeat for each line theKey in theKeys
      if pArray[theKey] is an array then
         put _printCharXTimes(space, pDimension * 5) & theKey & cr after
theText
         put pArray[theKey] into theTempArray
         put _PrintKeys(theTempArray, pDimension + 1) after theText
      else
         put _printCharXTimes(space, pDimension * 5) &  theKey & ":" && "`"
& pArray[theKey] & "`" & cr after theText
      end if
   end repeat

   return theText
end _PrintKeys
```

As you can see, PrintKeys prints off every key and value in the sDataArray
array. sDataArray contains the array that you, the developer, assigned to
the DataGrid using a property such as dgData or dgText. PrintKeys doesn't
take into account the columns you've created in your DataGrid. That is a
separate property.

So my guess is that you are populating the DataGrid with data that only has
10 columns. Could that be the case?

-- 
Trevor DeVore
ScreenSteps
www.screensteps.com



More information about the use-livecode mailing list