good job understanding and finding the mistake, nice catch!
-----------
the Dictionary (String Dictionary, Object Dictionary, and Script Dictionary) Attributes are basically an 'input->output' Function'ality:
String Dictionary:
input: "string1" // this is why you had to convert your 'this.CurrentPage' Integer (int) Attribute's value of 'data type: integer (int)' to 'data type: string'
output: "string2"
"string1" = "string2" // (input) "string1" -> (output) "string2"
StringDictionaryItem (Object_name.String_Dictionary_Attribute_name, input "string1") -> returns (outputs): "string2"
Object Dictionary:
input: "string"
output: object
// the Object has to actually exist of course too (the Object itself is not actually inside of the Object List, think of the Object List as a PE class' student roster, a piece of paper with the students' names on it, but not the actual students are upon/inside the paper lol, but it can be used by the PE teacher to bark/issue orders to those students)
"string" = object // (input) "string" -> (output) object
ObjectDictionaryItem (Object_name.Object_Dictionary_Attribute_name, input "string") -> returns (outputs): object
Script Dictionary:
input: "string"
output: script
"string" = script // (input) "string" -> (output) script
StringDictionaryItem (Object_name.Script_Dictionary_Attribute_name, input "string") -> returns (outputs): script
----------------
if you can follow my posts (lol), here's some links on using lists/dictionaries, if you're interested in understanding them more:
viewtopic.php?f=18&t=5137 (my guide on using/understanding lists/dictionaries)
viewtopic.php?f=18&t=5138 (code/game sample of their implementations in action, the code might not work as a functioning game with the current version of quest, as it's old code and/or still have some mistakes in it, lol)