Hi @v-siky-msft ,
On app start I will check for access to the data sources like using If functions to check for access. The IsEmpty function will throw an error if the user cannot access that list. Thus, only the accessible data sources will be added.

Then, I use my collection to as the datasource for a gallery (i.e. FilterGallery) to generate at runtime buttons that users can click to select the datasource. Note that "DRUPS3" is missing because I cannot access that datasource.

Now, when a user clicks the button, it will change the datasource of a different gallery that I am using to display the data (i.e. DisplayGallery) by simply setting the "Items" property of DisplayGallery to:
FilterGallery.Selected.DataSource
Here is the problem, the items shown this DisplayGallery is merely a copy of the original datasources. If there is any change to my original datasources, even if I refresh the connection, the DisplayGallery will not show the changes. The desired behavior is to have a reference to the datasource so that if anything changes, the DisplayGallery will also show the changes when the connection is refreshed. I apologize if it is still a little unclear.