web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Power Platform Community / Forums / Power Apps / Gallery Scroll slow sl...
Power Apps
Unanswered

Gallery Scroll slow sluggish cannot use

(0) ShareShare
ReportReport
Posted on by 301

Hi,

 

I have a canvas app (completely offline) and on the final screen i have a validation screen. 

 

This screen is a scroll able screen with three galleries and many many inputs, when i have many items in one of the three galleries (say around 50) the gallery becomes extremely slow and sluggish, the final screen is to double check any of the list items in each gallery and edit if need be. Is there any settings or something i can do to change?

 

I have followed the advice on the wiki however my app is completely in collections and variables.. so how can i speed this up?

 

does anyone have any suggestions?

Categories:
I have the same question (0)
  • v-jefferni Profile Picture
    Microsoft Employee on at

    Hi @ShaneITAutomate ,

     

    Could you please share more details about your scenario? What is the collection in data source of the Gallery? Which way was this collection created by?

     

    I’m not sure but the reason seems coming from the collection. As you mentioned there would be around 50 items in the gallery that means 50 records which includes fields values. You will have to wait for the collection creating from the beginning to the end, which costs time.

     

    In order to improve your app's performance, please check ans see the suggestions within the following blog:

    https://baizini-it.com/blog/index.php/2017/09/13/powerapps-improving-app-performance/

     

    And here is a video that may help as well:

    https://www.youtube.com/watch?v=kolRz8u2_Y0&feature=youtu.be

     

    Hope this helps.

     

    Best regards,

    Community Support Team _ Jeffer Ni
    If this post helps, then please consider Accept it as the solution to help the other members find it.

  • Community Power Platform Member Profile Picture
    Microsoft Employee on at

    Hi. Thankyou for your response. The app is a canvas app that is completely offline, there are 4 screens. 1 screen to one gallery (one collection) and the last screen has all 3 galleries and all three collections which a user can check of the information to patch then they uploads to 3 list items.  One collection is from a list (which is the only list downloaded from sharepoint) with around 800 individual rows with 12 or so field columns. There are another 3 collections that are made on the app one is a collection that just includes the items changed from the 800 and two others with around 35 to 50 columns  with around 300-500 rows that are also patched at the end of the day (when they are in connection)

  • ShaneITAutomate Profile Picture
    301 on at

    im the same guy as above

  • v-jefferni Profile Picture
    Microsoft Employee on at

    Hi @ShaneITAutomate @Anonymous ,

     

    Have you tried testing the 3 collections one by one to check if one of them slugged the app performance?

     

    If you found out the "culprit", you could start to do targeted optimizations:

    1\ Optimize formula of the collection.

    2\ Move the formula to another place, such as OnVisible of another screen.

     

    Please refer to below thread, those answers may be helpful.

    https://powerusers.microsoft.com/t5/Building-Power-Apps/Slow-filtering-and-sorting/td-p/255655

     

    Best regards,

    Community Support Team _ Jeffer Ni
    If this post helps, then please consider Accept it as the solution to help the other members find it.

  • ShaneITAutomate Profile Picture
    301 on at

    I tested it out by creating two apps (not optimal) both only have one screen and they both go funny once you have to start scrolling..

     

    Tried on many devices and browsers..

  • v-jefferni Profile Picture
    Microsoft Employee on at

    Hi @ShaneITAutomate ,

     

    So then could you please share the formulas of the two collections with us?

     

    Best regards,

    Community Support Team _ Jeffer Ni
    If this post helps, then please consider Accept it as the solution to help the other members find it.

  • ShaneITAutomate Profile Picture
    301 on at

    Too easy,

     

    Ill share with you what my app is doing in great detail if it helps (relating to just the two galleries).

     

    I have 5 Screens, the welcome screen, the collar screen and geology screen, the validation screen and the success screen, (we can ignore the success screen as its just a label that gets displayed telling the user it has successfully uploaded)

     

    OnStart=

     

    LoadData(
     colHOLEData,
     "SavedHOLEData",
     true 
    );
    LoadData(
     colExpGeoDATA,
     "SavedGeologyData",
     true
    );
    LoadData(
     colExpCollDATA,
     "SavedCollarData",
     true
    );
    LoadData( 
     colFinalGallery,
     "SavedFinalHOLEData",
     true
    );
    Concurrent(
     ClearCollect(
     colGeologyASYN,
     {
     Id: 0,
     ACODE: ""
     },
     {
     Id: 1,
     ACODE: "Y"
     },
     {
     Id: 2,
     ACODE: "N"
     }
     ),
     ClearCollect(
     colColDiameter,
     {
     Id: 0,
     Diameter: ""
     },
     {
     Id: 1,
     Diameter: "HQ"
     },
     {
     Id: 2,
     Diameter: "PQ"
     },
     {
     Id: 3,
     Diameter: "NQ"
     }
     ),
     ClearCollect(
     colCollarHoleType,
     {
     Id: 0,
     CODE: "",
     HoleType: ""
     },
     {
     Id: 1,
     CODE: "AC",
     HoleType: "Aircore"
     },
     {
     Id: 2,
     CODE: "RC",
     HoleType: "Reverse Circulation"
     },
     {
     Id: 3,
     CODE: "DD",
     HoleType: "Diamond"
     },
     {
     Id: 4,
     CODE: "RM",
     HoleType: "Rotary Mud"
     }
     ),
     ClearCollect(
     colCollarSurvey,
     {
     Id: 0,
     SurveyType: "",
     SurveyTypeName: ""
     },
     {
     Id: 1,
     SurveyType: "GPS",
     SurveyTypeName: "Handheld GPS"
     },
     {
     Id: 2,
     SurveyType: "DGPS",
     SurveyTypeName: "Differential GPS"
     }
     ),
     ClearCollect(
     colGeologyMoist,
     {
     Id: 0,
     MCODE: "",
     Moisture: ""
     },
     {
     Id: 1,
     MCODE: "D",
     Moisture: "DRY"
     },
     {
     Id: 2,
     MCODE: "M",
     Moisture: "MOIST"
     },
     {
     Id: 3,
     MCODE: "W",
     Moisture: "WET"
     }
     ),
     ClearCollect(
     colGeologyWash,
     {
     Id: 0,
     WCODE: "",
     Wash: ""
     },
     {
     Id: 1,
     WCODE: "VE",
     Wash: "VERY EASY"
     },
     {
     Id: 2,
     WCODE: "ME",
     Wash: "MODERATELY EASY"
     },
     {
     Id: 3,
     WCODE: "MD",
     Wash: "MODERATELY DIFFICULT"
     },
     {
     Id: 4,
     WCODE: "VD",
     Wash: "VERY DIFFICULT"
     },
     {
     Id: 5,
     WCODE: "IM",
     Wash: "IMPOSSIBLE"
     }
     ),
     ClearCollect(
     colGeologyShade,
     {
     Id: 0,
     SCODE: "",
     Intensity: ""
     },
     {
     Id: 1,
     SCODE: "L",
     Intensity: "LIGHT"
     },
     {
     Id: 2,
     SCODE: "M",
     Intensity: "MID"
     },
     {
     Id: 3,
     SCODE: "D",
     Intensity: "DARK"
     }
     ),
     ClearCollect(
     colGeologyColour,
     {
     Id: 0,
     CCODE: "",
     COLOUR: ""
     },
     {
     Id: 1,
     CCODE: "BK",
     COLOUR: "BLACK"
     },
     {
     Id: 2,
     CCODE: "BL",
     COLOUR: "BLUE"
     },
     {
     Id: 3,
     CCODE: "BR",
     COLOUR: "BROWN"
     },
     {
     Id: 4,
     CCODE: "BU",
     COLOUR: "BUFF"
     },
     {
     Id: 5,
     CCODE: "CR",
     COLOUR: "CREAM"
     },
     {
     Id: 6,
     CCODE: "GN",
     COLOUR: "GREEN"
     },
     {
     Id: 7,
     CCODE: "GR",
     COLOUR: "GREY"
     },
     {
     Id: 8,
     CCODE: "KH",
     COLOUR: "KHAKI"
     },
     {
     Id: 9,
     CCODE: "MU",
     COLOUR: "MUSTARD"
     },
     {
     Id: 10,
     CCODE: "OR",
     COLOUR: "ORANGE"
     },
     {
     Id: 11,
     CCODE: "PU",
     COLOUR: "PURPLE"
     },
     {
     Id: 12,
     CCODE: "PI",
     COLOUR: "PINK"
     },
     {
     Id: 13,
     CCODE: "RE",
     COLOUR: "RED"
     },
     {
     Id: 14,
     CCODE: "WH",
     COLOUR: "WHITE"
     },
     {
     Id: 15,
     CCODE: "YE",
     COLOUR: "YELLOW"
     },
     {
     Id: 16,
     CCODE: "BB",
     COLOUR: "BROWN-BLACK"
     },
     {
     Id: 17,
     CCODE: "BC",
     COLOUR: "BROWN-CREAM"
     },
     {
     Id: 18,
     CCODE: "BO",
     COLOUR: "BROWN-ORANGE"
     },
     {
     Id: 19,
     CCODE: "BW",
     COLOUR: "BROWN-WHITE"
     },
     {
     Id: 20,
     CCODE: "BY",
     COLOUR: "BROWN-YELLOW"
     },
     {
     Id: 21,
     CCODE: "CO",
     COLOUR: "CREAM-ORANGE"
     },
     {
     Id: 22,
     CCODE: "RC",
     COLOUR: "CREAM-RED"
     },
     {
     Id: 23,
     CCODE: "GB",
     COLOUR: "GREY-BROWN"
     },
     {
     Id: 24,
     CCODE: "GC",
     COLOUR: "GREY-CREAM"
     },
     {
     Id: 25,
     CCODE: "GD",
     COLOUR: "GREY-RED"
     },
     {
     Id: 26,
     CCODE: "GG",
     COLOUR: "GREY-GREEN"
     },
     {
     Id: 27,
     CCODE: "GK",
     COLOUR: "GREY-BLACK"
     },
     {
     Id: 28,
     CCODE: "GO",
     COLOUR: "GREY-ORANGE"
     },
     {
     Id: 29,
     CCODE: "GP",
     COLOUR: "GREY-PINK"
     },
     {
     Id: 30,
     CCODE: "GW",
     COLOUR: "GREY-WHITE"
     },
     {
     Id: 31,
     CCODE: "GY",
     COLOUR: "GREY-YELLOW"
     },
     {
     Id: 32,
     CCODE: "NB",
     COLOUR: "GREEN-BROWN"
     },
     {
     Id: 33,
     CCODE: "NY",
     COLOUR: "GREEN-YELLOW"
     },
     {
     Id: 34,
     CCODE: "OW",
     COLOUR: "ORANGE-WHITE"
     },
     {
     Id: 35,
     CCODE: "OY",
     COLOUR: "ORANGE-YELLOW"
     },
     {
     Id: 36,
     CCODE: "OB",
     COLOUR: "ORANGE-BROWN"
     },
     {
     Id: 37,
     CCODE: "PC",
     COLOUR: "PINK-CREAM"
     },
     {
     Id: 38,
     CCODE: "PW",
     COLOUR: "PINK-WHITE"
     },
     {
     Id: 39,
     CCODE: "RB",
     COLOUR: "RED-BROWN"
     },
     {
     Id: 40,
     CCODE: "RK",
     COLOUR: "RED-BLACK"
     },
     {
     Id: 41,
     CCODE: "RO",
     COLOUR: "RED-ORANGE"
     },
     {
     Id: 42,
     CCODE: "RP",
     COLOUR: "RED-PINK"
     },
     {
     Id: 43,
     CCODE: "RW",
     COLOUR: "RED-WHITE"
     },
     {
     Id: 44,
     CCODE: "RY",
     COLOUR: "RED-YELLOW"
     },
     {
     Id: 45,
     CCODE: "WC",
     COLOUR: "WHITE-CREAM"
     },
     {
     Id: 46,
     CCODE: "YB",
     COLOUR: "YELLOW-BROWN"
     },
     {
     Id: 47,
     CCODE: "YG",
     COLOUR: "YELLOW-GREEN"
     },
     {
     Id: 48,
     CCODE: "YW",
     COLOUR: "YELLOW-WHITE"
     }
     ),
     ClearCollect(
     colGeologyLith,
     {
     Id: 0,
     LCODE: "",
     Lithology: ""
     },
     {
     Id: 1,
     LCODE: "CA",
     Lithology: "CALCRETE"
     },
     {
     Id: 2,
     LCODE: "CG",
     Lithology: "CONGLOMERATE"
     },
     {
     Id: 3,
     LCODE: "CL",
     Lithology: "CLAY"
     },
     {
     Id: 4,
     LCODE: "CS",
     Lithology: "CLAYEY SAND"
     },
     {
     Id: 5,
     LCODE: "GR",
     Lithology: "GRAVEL SAND"
     },
     {
     Id: 6,
     LCODE: "HM",
     Lithology: "HEAVY MINERAL"
     },
     {
     Id: 7,
     LCODE: "PE",
     Lithology: "PEBBLES"
     },
     {
     Id: 8,
     LCODE: "SA",
     Lithology: "SAND"
     },
     {
     Id: 9,
     LCODE: "SC",
     Lithology: "SANDY CLAY"
     },
     {
     Id: 10,
     LCODE: "SD",
     Lithology: "SILTY SAND"
     },
     {
     Id: 11,
     LCODE: "ST",
     Lithology: "SILT"
     },
     {
     Id: 12,
     LCODE: "SY",
     Lithology: "SILTY-CLAY"
     },
     {
     Id: 13,
     LCODE: "YS",
     Lithology: "CLAYEY-SILT"
     },
     {
     Id: 14,
     LCODE: "BA",
     Lithology: "BASALT"
     },
     {
     Id: 15,
     LCODE: "DO",
     Lithology: "DOLOMITE"
     },
     {
     Id: 16,
     LCODE: "GA",
     Lithology: "GRANITE"
     },
     {
     Id: 17,
     LCODE: "IR",
     Lithology: "IRONSTONE"
     },
     {
     Id: 18,
     LCODE: "LA",
     Lithology: "LATERITE"
     },
     {
     Id: 19,
     LCODE: "LI",
     Lithology: "LIMESTONE"
     },
     {
     Id: 20,
     LCODE: "MU",
     Lithology: "MUDSTONE"
     },
     {
     Id: 21,
     LCODE: "QU",
     Lithology: "QUARTZ"
     },
     {
     Id: 22,
     LCODE: "SE",
     Lithology: "SILCRETE"
     },
     {
     Id: 23,
     LCODE: "SH",
     Lithology: "SHALE"
     },
     {
     Id: 24,
     LCODE: "SI",
     Lithology: "SILTSTONE"
     },
     {
     Id: 25,
     LCODE: "SL",
     Lithology: "SLATE"
     },
     {
     Id: 26,
     LCODE: "SO",
     Lithology: "SOIL"
     },
     {
     Id: 27,
     LCODE: "SS",
     Lithology: "SANDSTONE"
     },
     {
     Id: 28,
     LCODE: "IC",
     Lithology: "INDURATED CLAY"
     },
     {
     Id: 29,
     LCODE: "LS",
     Lithology: "LOSS"
     },
     {
     Id: 30,
     LCODE: "CO",
     Lithology: "COAL"
     },
     {
     Id: 31,
     LCODE: "SDY",
     Lithology: "SILTY-SANDY-CLAY"
     },
     {
     Id: 32,
     LCODE: "SYS",
     Lithology: "SILTY-CLAYEY-SAND"
     }
     ),
     ClearCollect(
     colGeologyGrainMax,
     {
     Id: 0,
     GCODE: "",
     Grainsize: ""
     },
     {
     Id: 1,
     GCODE: "CL",
     Grainsize: "CLAY"
     },
     {
     Id: 2,
     GCODE: "SI",
     Grainsize: "SILT"
     },
     {
     Id: 3,
     GCODE: "VF",
     Grainsize: "VERY FINE"
     },
     {
     Id: 4,
     GCODE: "F",
     Grainsize: "FINE"
     },
     {
     Id: 5,
     GCODE: "M",
     Grainsize: "MEDIUM"
     },
     {
     Id: 6,
     GCODE: "C",
     Grainsize: "COARSE"
     },
     {
     Id: 7,
     GCODE: "VC",
     Grainsize: "VERY COARSE"
     },
     {
     Id: 8,
     GCODE: "GR",
     Grainsize: "GRIT"
     },
     {
     Id: 9,
     GCODE: "PB",
     Grainsize: "PEBBLE"
     }
     ),
     ClearCollect(
     colGeologySorting,
     {
     Id: 0,
     SCODE: "",
     Sorting: ""
     },
     {
     Id: 1,
     SCODE: "VP",
     Sorting: "VERY POOR"
     },
     {
     Id: 2,
     SCODE: "PS",
     Sorting: "POORLY SORTED"
     },
     {
     Id: 3,
     SCODE: "MS",
     Sorting: "MODERATELY SORTED"
     },
     {
     Id: 4,
     SCODE: "WS",
     Sorting: "WELL SORTED"
     },
     {
     Id: 5,
     SCODE: "VW",
     Sorting: "VERY WELL SORTED"
     }
     ),
     ClearCollect(
     colGeologyInduration,
     {
     Id: 0,
     ICODE: "",
     Induration: ""
     },
     {
     Id: 1,
     ICODE: "CA",
     Induration: "CALCAREOUS"
     },
     {
     Id: 2,
     ICODE: "SE",
     Induration: "SILICEOUS"
     },
     {
     Id: 3,
     ICODE: "FE",
     Induration: "FERROUS"
     },
     {
     Id: 4,
     ICODE: "PY",
     Induration: "PYRITE"
     },
     {
     Id: 5,
     ICODE: "GY",
     Induration: "GYPSUM"
     }
     ),
     ClearCollect(
     colGeologyHardness,
     {
     Id: 0,
     HCODE: "",
     Hardness: ""
     },
     {
     Id: 1,
     HCODE: "1",
     Hardness: "VERY SOFT"
     },
     {
     Id: 2,
     HCODE: "2",
     Hardness: "SOFT"
     },
     {
     Id: 3,
     HCODE: "3",
     Hardness: "MEDIUM HARDNESS"
     },
     {
     Id: 4,
     HCODE: "4",
     Hardness: "HARD"
     },
     {
     Id: 5,
     HCODE: "5",
     Hardness: "VERY HARD"
     }
     ),
     ClearCollect(
     colGeologyGrainMin,
     {
     Id: 0,
     GCODE: "",
     Grainsize: ""
     },
     {
     Id: 1,
     GCODE: "CL",
     Grainsize: "CLAY"
     },
     {
     Id: 2,
     GCODE: "SI",
     Grainsize: "SILT"
     },
     {
     Id: 3,
     GCODE: "VF",
     Grainsize: "VERY FINE"
     },
     {
     Id: 4,
     GCODE: "F",
     Grainsize: "FINE"
     },
     {
     Id: 5,
     GCODE: "M",
     Grainsize: "MEDIUM"
     },
     {
     Id: 6,
     GCODE: "C",
     Grainsize: "COARSE"
     },
     {
     Id: 7,
     GCODE: "VC",
     Grainsize: "VERY COARSE"
     },
     {
     Id: 8,
     GCODE: "GR",
     Grainsize: "GRIT"
     },
     {
     Id: 9,
     GCODE: "PB",
     Grainsize: "PEBBLE"
     }
     ),
     ClearCollect(
     colGeologyQualifiers,
     {
     Id: 0,
     QCODE: "",
     Qualifiers: ""
     },
     {
     Id: 1,
     QCODE: "AT",
     Qualifiers: "ABUNDANT BLACK TRASH"
     },
     {
     Id: 2,
     QCODE: "CT",
     Qualifiers: "COMMON BLACK TRASH"
     },
     {
     Id: 3,
     QCODE: "MT",
     Qualifiers: "MINOR BLACK TRASH"
     },
     {
     Id: 4,
     QCODE: "MI",
     Qualifiers: "MICACEOUS"
     },
     {
     Id: 5,
     QCODE: "MO",
     Qualifiers: "MOTTLED"
     },
     {
     Id: 6,
     QCODE: "OX",
     Qualifiers: "OXIDISED"
     },
     {
     Id: 7,
     QCODE: "SI",
     Qualifiers: "SILICEOUS"
     },
     {
     Id: 8,
     QCODE: "PY",
     Qualifiers: "PYRITIC"
     },
     {
     Id: 9,
     QCODE: "CA",
     Qualifiers: "CALCAREOUS"
     },
     {
     Id: 10,
     QCODE: "CB",
     Qualifiers: "CARBONACEOUS"
     },
     {
     Id: 11,
     QCODE: "FE",
     Qualifiers: "FERRUGINOUS"
     },
     {
     Id: 12,
     QCODE: "LA",
     Qualifiers: "LATERITIC"
     },
     {
     Id: 13,
     QCODE: "WE",
     Qualifiers: "WEATHERED"
     }
     ),
     ClearCollect(
     colGeologyhmgs,
     {
     Id: 0,
     HCODE: "",
     hmgs: ""
     },
     {
     Id: 1,
     HCODE: "TR",
     hmgs: "TRACE"
     },
     {
     Id: 2,
     HCODE: "MN",
     hmgs: "MINOR"
     },
     {
     Id: 3,
     HCODE: "CM",
     hmgs: "COMMON"
     },
     {
     Id: 4,
     HCODE: "AB",
     hmgs: "ABUNDANT"
     }
     ),
     ClearCollect(
     colGeologyFacies,
     {
     Id: 0,
     FCODE: "",
     Facies: ""
     },
     {
     Id: 1,
     FCODE: "TFS",
     Facies: "TOP OF FORESHORE"
     },
     {
     Id: 2,
     FCODE: "TSZ",
     Facies: "TOP OF SURF ZONE"
     },
     {
     Id: 3,
     FCODE: "TLS",
     Facies: "TOP OF LOWER FORESHORE"
     },
     {
     Id: 4,
     FCODE: "TLI",
     Facies: "TOP OF LIMESTONE"
     }
     ),
     ClearCollect(
     colCollarStates,
     {
     Id: 0,
     SCODE: ""
     },
     {
     Id: 1,
     SCODE: "ACT"
     },
     {
     Id: 2,
     SCODE: "NSW"
     },
     {
     Id: 3,
     SCODE: "WA"
     },
     {
     Id: 4,
     SCODE: "SA"
     },
     {
     Id: 5,
     SCODE: "QLD"
     },
     {
     Id: 6,
     SCODE: "NT"
     },
     {
     Id: 7,
     SCODE: "VIC"
     },
     {
     Id: 8,
     SCODE: "TAS"
     }
     ),
     ClearCollect(
     colGeologyFinalHole,
     {
     Id: 1,
     FCODE: "",
     FinalHoleName: ""
     },
     {
     Id: 2,
     FCODE: "S1",
     FinalHoleName: "Standard-ALS"
     },
     {
     Id: 3,
     FCODE: "S2",
     FinalHoleName: "Standard-RRL"
     },
     {
     Id: 4,
     FCODE: "S3",
     FinalHoleName: "Standard-RRM"
     },
     {
     Id: 5,
     FCODE: "S4",
     FinalHoleName: "Standard-RRH"
     },
     {
     Id: 6,
     FCODE: "B",
     FinalHoleName: "Blank"
     },
     {
     Id: 7,
     FCODE: "",
     FinalHoleName: "No Quality Control"
     }
     ),
     ClearCollect(
     colGeologyGSHM,
     {
     Id: 0,
     GCODE: "",
     Grainsize: ""
     },
     {
     Id: 1,
     GCODE: "VF",
     Grainsize: "VERY FINE"
     },
     {
     Id: 2,
     GCODE: "F",
     Grainsize: "FINE"
     },
     {
     Id: 3,
     GCODE: "M",
     Grainsize: "MEDIUM"
     },
     {
     Id: 4,
     GCODE: "C",
     Grainsize: "COARSE"
     }
     )
     
    );

     


    On the welcome screen,
    there is a button that downloads from a Sharepoint list (this is the only part that is offline besides the forall patch function)
    The buttons OnSubmit is

     

    ClearCollect(
     colHOLEData,
     Sort(
     Filter(AddColumns(
     ExpHoleIndex,
     "SORTID",
     Substitute(
     PEGID,
     "CP",
     ""
     ) * 1, 
     "HoleSelected",false),Status = "Pending"
     ),
     SORTID,
     Descending
     )
    );
    

     

    This code is to do two things, one download only the items in the database where status is equal to "Pending" and two create a column called SORTID from the lists column called PEGIDs because they are called CP1 to CP900 and you cant sort them. (Is this the best solution for this problem?)

    The gallery item is

     

    SortByColumns(
     Search(
     Filter(
     colHOLEData,
     (
     IsBlank(ddStatusFilter.Selected.Value) ||
     Status = ddStatusFilter.Selected.Value
     )
     ),
     TextSearchBox.Text,
     "PEGID"
     ),
     "Status",
     "Descending",
     "SORTID", 
     Ascending
    )

     

    this is so i can have it sorted, use search and fitler by a dropdown.

     

    The user finds there hole and the onselect of the gallery is

     

    Set(varItem, HOLEIDGallery.Selected)

     

    The user then on a bunch of text inputs (defaults = varItem.whateveritem) changes any of the information and gives the HoleID a name and saves via this code

    Set(varItem, 
     {HoleID: riHOLEID.Text,
     Status: ddHoleStatuslbl.Text,
     PEGID: riNEWPEGPEGID.Text,
     EL:riNEWPEGHOLEEL.Text,
     Easting: riHoleNameEast.Text,
     Northing: riHoleNameNorth.Text
     }
    );Set(varColPageReset, true);
    LookUp(colHOLEData, HoleID = riHOLEID.Text);
    Patch(
     colHOLEData,
     HOLEIDGallery.Selected,
     {
     Status: ddHoleStatuslbl.Text,
     PEGID: riNEWPEGPEGID.Text,
     EL:riNEWPEGHOLEEL.Text,
     Easting: riHoleNameEast.Text,
     Northing: riHoleNameNorth.Text,
     HoleID: riHOLEID.Text
     }
    );
    Collect(colFinalGallery,
    {
     Status: ddHoleStatuslbl.Text,
     PEGID: riNEWPEGPEGID.Text,
     EL:riNEWPEGHOLEEL.Text,
     Easting: riHoleNameEast.Text,
     Northing: riHoleNameNorth.Text,
     HoleID: riHOLEID.Text,
     HoleCompletedDate:Text(Today(), "[$-gb]dd/mm/yyyy"),
     HoleSelected:true
     });
    SaveData( 
     colFinalGallery,
     "SavedFinalHOLEData"
    );
    SaveData( 
     colHOLEData,
     "SavedHOLEData"
    );



    and then i used the varitem to set the information on the collar page and the geopage as all of this information is related to the PEG and HOLE IDs

     

    The user then goes to a collar page and manipulates the collar data using the varitem, (the gallery on this screen is fine as at most it will have 8 entries)

     

    the user then goes to the geology screen (this is the second gallery that is slow and sluggish and they add from around 20 or so dropdowns (items are from the onstart code) and 20 or so text inputs columns into a gallery


    they are collected via two collections (the second is the last hole entry and they then go back to screen1 and start all over again)

    the first adds into the collection via

     

    If(varDoubleSampleHole=true,
    Collect(
     colExpGeoDATA,
     {
     PEGID:HiddenHOLEPegIDLabel.Text,
     HOLEID: HiddenGeoIDLabel.Text,
     SampleID: tiSampleID_1.Text,
     FROM_M: tiFromM_1.Text,
     TO_M: tiToM_1.Text,
     'AS_Y/N': ddASYnlbl_1.Text,
     Moisture: ddMoistlbl_1.Text,
     WT_M: tiWtm_1.Text,
     SLIMES_EST: tiSlimes_1.Text,
     Wash: ddWashlbl_1.Text,
     Shade: ddShadelbl_1.Text,
     COL1: ddColourlbl_1.Text,
     LITH1: ddLithlbl_1.Text,
     GSDOM: ddGSDomlbl_1.Text,
     GSMAX: ddGSMaxlbl_1.Text,
     SORT1: ddSortlbl_1.Text,
     IND: ddIndlbl_1.Text,
     'IND%': tiInduperc_1.Text,
     HARD: ddHardlbl_1.Text,
     HM_Est: tiHmest_1.Text,
     GS_HM: ddHmgslbl_1.Text,
     Comments: tiCommentsGeo_1.Text,
     QU: ddQualbl_1.Text,
     FM: tiFM_1.Text,
     Facies: ddFacieslbl_1.Text,
     Finished: "No"
     }
    );
    Collect(
     colExpGeoDATA,
     {
     PEGID:HiddenGeoPegIDLabel.Text,
     HOLEID: HiddenGeoIDLabel.Text,
     SampleID: tiSampleID_1.Text,
     FROM_M: tiFromM_1.Text,
     TO_M: tiToM_1.Text,
     'AS_Y/N': "D",
     Moisture: ddMoistlbl_1.Text,
     WT_M: tiWtm_1.Text,
     SLIMES_EST: tiSlimes_1.Text,
     Wash: ddWashlbl_1.Text,
     Shade: ddShadelbl_1.Text,
     COL1: ddColourlbl_1.Text,
     LITH1: ddLithlbl_1.Text,
     GSDOM: ddGSDomlbl_1.Text,
     GSMAX: ddGSMaxlbl_1.Text,
     SORT1: ddSortlbl_1.Text,
     IND: ddIndlbl_1.Text,
     'IND%': tiInduperc_1.Text,
     HARD: ddHardlbl_1.Text,
     HM_Est: tiHmest_1.Text,
     GS_HM: ddHmgslbl_1.Text,
     Comments: tiCommentsGeo_1.Text,
     QU: ddQualbl_1.Text,
     FM: tiFM_1.Text,
     Facies: ddFacieslbl_1.Text,
     Finished: "No"
     }
    
    );SaveData(
     colExpGeoDATA,
     "SavedGeologyData"
    )
    ;UpdateContext({varStart:true});UpdateContext({varDisplay:false}),Collect(
     colExpGeoDATA,
     {
     PEGID:HiddenGeoPegIDLabel.Text,
     HOLEID: HiddenGeoIDLabel.Text,
     SampleID: tiSampleID_1.Text,
     FROM_M: tiFromM_1.Text,
     TO_M: tiToM_1.Text,
     'AS_Y/N': ddASYnlbl_1.Text,
     Moisture: ddMoistlbl_1.Text,
     WT_M: tiWtm_1.Text,
     SLIMES_EST: tiSlimes_1.Text,
     Wash: ddWashlbl_1.Text,
     Shade: ddShadelbl_1.Text,
     COL1: ddColourlbl_1.Text,
     LITH1: ddLithlbl_1.Text,
     GSDOM: ddGSDomlbl_1.Text,
     GSMAX: ddGSMaxlbl_1.Text,
     SORT1: ddSortlbl_1.Text,
     IND: ddIndlbl_1.Text,
     'IND%': tiInduperc_1.Text,
     HARD: ddHardlbl_1.Text,
     HM_Est: tiHmest_1.Text,
     GS_HM: ddHmgslbl_1.Text,
     Comments: tiCommentsGeo_1.Text,
     QU: ddQualbl_1.Text,
     FM: tiFM_1.Text,
     Facies: ddFacieslbl_1.Text,
     Finished: "No"
     }
    );SaveData( 
     colExpGeoDATA,
     "SavedGeologyData"
    )
    ;UpdateContext({varStart:true});UpdateContext({varGeoReset: !varGeoReset});
    UpdateContext({varGeoReset: !varGeoReset});UpdateContext({varDisplay:false});UpdateContext({varGeoReset: !varGeoReset});
    UpdateContext({varGeoReset: !varGeoReset}));

     

    and the second

     

    Set(varFinalHoleM, {FROM_M: tiFromM_1.Text});
    Collect(
     colExpGeoDATA,
     {
     PEGID:HiddenGeoPegIDLabel.Text,
     HOLEID: HiddenGeoIDLabel.Text,
     SampleID: tiSampleID_1.Text,
     FROM_M: "",
     TO_M: "",
     'AS_Y/N': ddASYNFinalHolelbl.Text,
     Moisture: "",
     WT_M: "",
     SLIMES_EST: "",
     Wash: "",
     Shade: "",
     COL1:"",
     LITH1: "",
     GSDOM:"",
     GSMAX:"",
     SORT1: "",
     IND: "",
     'IND%': "",
     HARD: "",
     HM_Est: "",
     GS_HM:"",
     Comments: "",
     QU: "",
     FM: "",
     Facies: "",
     Finished: ""
     }
    );SaveData(
     colExpGeoDATA,
     "SavedGeologyData"
    );
    If(CollarGallery.Selected.HOLEID = HiddenCollarIDLabel.Text,
     Patch(colExpCollDATA,CollarGallery.Selected,{
     PEGID:HiddenGeoPegIDLabel.Text,
     DataSet: Datasetlbl.Text,
     State: ddStateslbl.Text,
     HOLEID: HiddenGeoIDLabel.Text,
     HOLETYPE: ddHoletypelbl.Text,
     DIAMETER: ddDiameterlbl.Text,
     TD: varFinalHoleM.FROM_M,
     PREF_GRIDID: ddGridpreflbl.Text,
     Pref_East: HiddenHOLEEastLabel.Text,
     Pref_North: HiddenHOLENorthLabel.Text,
     Pref_RL: tiPrefRL.Text,
     GPS_RL: tiGPSRL.Text,
     SURVEYTYPE: ddGpslbl.Text,
     DEM_RL: tiDEMRL.Text,
     LIDAR_RL: tiLIDARRL.Text,
     AZI: tiAZI.Text,
     Dip: tiDip.Text,
     Program: tiProgram.Text,
     DrillDate: DrillDatelbl.Text,
     Year: DrillDateYEARlbl.Text,
     EL: ddDepositlbl.Text,
     Report: tiReport.Text,
     Comments: tiComments.Text,
     CURRENT_EL: CurrentELlbl.Text,
     Company: Companylbl.Text,
     DrillingCompany: ddDrillcomplbl.Text,
     Traverse: tiTraverse.Text,
     Status: "Finished"
     }),Collect(
     colExpCollDATA,
     {
     PEGID:HiddenGeoPegIDLabel.Text,
     DataSet: Datasetlbl.Text,
     State: ddStateslbl.Text,
     HOLEID: tiHoleID.Text,
     HOLETYPE: ddHoletypelbl.Text,
     DIAMETER: ddDiameterlbl.Text,
     TD:varFinalHoleM.FROM_M,
     PREF_GRIDID: ddGridpreflbl.Text,
     Pref_East: HiddenHOLEEastLabel.Text,
     Pref_North: HiddenHOLENorthLabel.Text,
     Pref_RL: tiPrefRL.Text,
     GPS_RL: tiGPSRL.Text,
     SURVEYTYPE: ddGpslbl.Text,
     DEM_RL: tiDEMRL.Text,
     LIDAR_RL: tiLIDARRL.Text,
     AZI: tiAZI.Text,
     Dip: tiDip.Text,
     Program: tiProgram.Text,
     DrillDate: DrillDatelbl.Text,
     Year: DrillDateYEARlbl.Text,
     EL: ddDepositlbl.Text,
     Report: tiReport.Text,
     Comments: tiComments.Text,
     CURRENT_EL: CurrentELlbl.Text,
     Company: Companylbl.Text,
     DrillingCompany: ddDrillcomplbl.Text,
     Traverse: tiTraverse.Text,
     Status: "Finished"
     }))
    
    ;SaveData( 
     colExpCollDATA,
     "SavedCollarData"
    );
    Patch(colHOLEData, 
     varItem,
     {
     Status: "Finished",
     EL:varItem.EL,
     Easting: varItem.Easting,
     Northing:varItem.Northing,
     HoleID: varItem.HoleID
     })
    ;SaveData( 
     colHOLEData,
     "SavedHOLEData"
    );
    LookUp(colFinalGallery, "PEGID" = HiddenGeoPegIDLabel.Text);
    If(ValidHoleGallery.Selected.PEGID = HiddenGeoPegIDLabel.Text,
    Patch(colFinalGallery, 
     {PEGID: varItem.PEGID,
     Status: "Finished",
     EL:varItem.EL,
     Easting: varItem.Easting,
     Northing:varItem.Northing,
     HoleID: varItem.HoleID,
     HoleCompletedDate:Text(Today(), "[$-en]dd/mm/yyyy"),
     HoleSelected:true}
     ),
    Collect(colFinalGallery,{
     PEGID: varItem.PEGID,
     Status: "Finished",
     EL:varItem.EL,
     Easting: varItem.Easting,
     Northing:varItem.Northing,
     HoleID: varItem.HoleID,
     HoleCompletedDate:Text(Today(), "[$-en]dd/mm/yyyy"),
     HoleSelected:true
     }))
    ;SaveData( 
     colFinalGallery,
     "SavedFinalHOLEData"
    );
    UpdateContext({varFinalHole:false});Navigate(WelcomeScreen,ScreenTransition.Fade);UpdateContext({varGeoV2Reset: !varGeoV2Reset});
    UpdateContext({varGeoV2Reset: !varGeoV2Reset});UpdateContext({varGeoReset: !varGeoReset});
    UpdateContext({varGeoReset: !varGeoReset});UpdateContext({varGeoFinalCheckReset: !varGeoFinalCheckReset});
    UpdateContext({varGeoFinalCheckReset: !varGeoFinalCheckReset});UpdateContext({varDoubleSampleHole:false})

     


    Ohh and if it helps the geology gallery is filtered via a holeid

     

    Filter(colExpGeoDATA,HOLEID=GEOLOGYHOLEIDLabel.Text)

     

    and the default is Last(colExpGeoDATA)

    i should also say there is a validation screen with all three galleries however it doesnt flow so im removing the galleries and using datatables to view them and then if they see any errors and need to do changes before the final forall patch to the sharepoint lists ill send them back to the gallery page and select the HoleID

     

    Hope that all makes sense?

     

    I tried to include anything that has anything to do with the collections and galleries and how they are made.

    If you could tell me how i can make the welcome screen gallery and the geology screen gallery scroll without error i would be extremely appreciative

     

  • v-jefferni Profile Picture
    Microsoft Employee on at

    Hi @ShaneITAutomate ,

     

    After reviewed the codes I suspect the issue was caused by SavaData functions.

     

    Please refer to below blog:

    https://powerapps.microsoft.com/en-us/blog/savedata-and-loaddata-unleashed/

     

    Although at this time SaveData and LoadData have improved so much as before, there are still limits on how much memory an app can use that ultimately limits the capacity. 

     

    Applying several SaveData functions along with quite a few behavior functions even including creating large collections at the same place seems not a good choice. May be you could consider separating them into buttons and OnVisible of different screens.

     

    Best regards,

    Community Support Team _ Jeffer Ni
    If this post helps, then please consider Accept it as the solution to help the other members find it.

  • ShaneITAutomate Profile Picture
    301 on at

    I disagree with the savedata/loaddata being the problem. Only because the problem was there before i used the savedata (i only add those on the release because it breaks if you test on it) You could test it by changing the collection number to 2000 (in app settings) and downloading 1000 and then 2000 entries into a collection and then displaying them in a gallery. It will also be slow..

     

    I did a few things that improved my problem, however it did not go away. one was i ended up removing as many controls as i could and made the galleries to be "editable tables" filtering the data to only show one unique hole at a time, the other was turning the validation screen into 3 datatables and they now edit there data on the editable table galleries only (so 3 galleries now, not 6). I also removed all the extra column data downloaded from sharepoint from being collected and lastly i created another collection that only contains the changes i did from the intial collection downloaded.

     

    it is better, however it is still not ok for a user to put up with a 0.5 to 2 second render on the galleries. Thankyou for you time regardless, i appreciate it.

     

     

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Season of Sharing Community Challenge Winners!

Congratulations to our community stars!

Kudos to our 2025 Community Spotlight Honorees

Expanding mentorship, skilling, and AI innovation

Congratulations to the July Top 10 Community Leaders!

These are the community rock stars!

Leaderboard > Power Apps

#1
WarrenBelz Profile Picture

WarrenBelz 392 Most Valuable Professional

#2
11manish Profile Picture

11manish 136 Super User 2026 Season 2

#3
MS.Ragavendar Profile Picture

MS.Ragavendar 109 Super User 2026 Season 2

Last 30 days Overall leaderboard