You are forgetting the page life cycle here.
Remember, when a page is rendered and sent to the client side on the server side, the code behind, the page class, the values, the memory, the variables are all 100% disposed of, and go out of scope!
When a page is sent to the client, the server does NOT keep a copy of the page, a copy of the code, a copy of the values in memory. As a result, any attempts to reference a page code class will fail.
So, the page life cycle (a round trip) looks like this:
You have this:

Note how your page class - code behind is NOT in memory on the server.
YOU DO NOT have this:

And you do NOT even have this:

Remember, this is not like desktop software. The server is ONE server for everyone, and it is the job of the web server (IIS) to process ONE posted page, and ONE paged posted by "any user" and not just you.
The server does NOT keep a copy of the page code behind in memory. The copy of the page class (code behind) ONLY exists in memory for a short period of time - and ONLY during the post back cycle when the code behind runs. Once the code behind is done, and the page is sent back to the client side, then on the server side, the code behind and page class is 100% disposed of, and tossed out of memory. Remember, the web server can only process one page at a time, and it is not "allocated" for just one user!
Note very carefully here - the web page is now ON the CLIENT computer, and that page class (code behind) now does not exist on the server side anymore.
When you click on a button, or do a post-back, then you get the start of the round trip.
This:

Our web page is sent up to the server. You now have this:

NOW an instance of the page class is created, and your code behind starts running. And hence previous variable values also start from scratch and as new.
Your code behind can modify controls (even controls to be visible or not), but the page is NOT interacting with the user - ONLY code can MODIFY the "copy of" the web page (user does not see one change, or many changes made by code at this point in time).
One change, or MANY changes to the web page can occur, but AS YOU update things like a text box etc., the user does NOT see these changes just yet. So, if you run a loop 1 to 10, and update a text box, the text box will be updated 1 to 10. However, the end user sees nothing, since that web page (and code) is running up on the server (and server is making changes to that copy of the web page). The user just sees the browser "wait" icon while this process is occurring.
Changes to web page are occurring on the server - the client-side browser does not have the web page any more!
Once ALL of your code is done running, then and ONLY then does the page make the trip back to the client-side browser.
The server-side class instance and code (and variables) are then TOSSED OUT - DOES NOT exist! Your server-side page class is disposed - removed from memory, and the web page code behind does NOT exist any more in memory.
So, the whole new modified web page travels back to the client side, is re-displayed, JavaScript is loaded, and THEN JavaScript starts running. So even the client-side page now 100% re-loads.
So, if you open 2 pages, or 5 pages (in different browser tabs, or even separate browsers), then each of these pages are static pages JUST sitting on the user's desktop. The server does not keep a copy of the 5 pages, nor does the code behind EVEN exist in memory. After all, the user might now start shopping on Amazon with that one tab, right? or the user might close the browser - the server has no idea this will have occurred, or even if the web page is still open.
You can think of this like calling a subroutine. Once the subroutine exits, then all of the variables and code for that subroutine now goes out of scope. You can think of each web page as the same idea. Each web page code behind ONLY exists during the short time the post-back cycle runs, and ONLY during the VERY short time the code behind is running. Once the code behind is finished (hopefully modifying controls on the page), then the WHOLE page is sent back to the client side, and on the server side, that code, that page class, the variables are all 100% disposed of. A web server is in effect a message processor, and it processes one web page at a time. It does not hold in memory each user's browser tabs open. The web server has to dish out web pages for many users, but it is only one computer!
This concept in web land is called "state-less" programming. And you don't have a bunch of code and separate memory for each user like you do with desktop software. In desktop land, EACH user has their own computer. In web land, you have ONE server "page" processing system called IIS. Its job is to process a posted page, and when it returns the processed page, it is now ready to process a new posted back page - a page that can be posted by ANY user, not just the one user.
You don't have multiple copies of the code behind in memory. The code behind and page class ONLY exists for the VERY short time during the "round trip" or so-called page life cycle.
Hence, your sample code that attempts to reference other page class and code? It will never work, since IIS does not hold such code or the variables in memory. It ONLY works with ONE page at a time.
So, study the above pictures and with an understanding of the page lifecycle, you will see how any code design that attempts to reference other pages simply cannot work as your code is currently designed.
You can't call page code from another page. And in many ways, if you could do this, then my code would look for and try to use a web page you have open called "my banking".
Hence, keep in mind that once a page is sent to the client side, then on the server side that page code, the page class, the variables etc. don't exist server side anymore. The web server is to be thought of a "page post processing" system, and it really only can process one page at a time.
On each page post-back, you note the values (variables) in code start from scratch each time, and as noted, the code behind page class and values only exists for a very short time - the short time being the time that the page is up on the server being processed. Once the page is processed and sent back to the client side, then the server dumps, and 100% disposes of the code behind from memory, and the web server is now ready and waiting to process any page from any user. Remember, you have ONE web server, and it can and will be processing pages from all users - not just you the one user.
Do read the above, and once you grasp the concept of "state less" programming, you see how any code design in which you attempt to reference or use another page class will not work, since they don't exist or remain in memory. About the only exception to the rule is when using a master and child page. In that case, during the short round trip, then both page classes exist in memory, but once again, the instant the code completes and sends the master + child page to the client side, then once again, the page code class goes out of scope and does not exist in memory anymore.
As a result of the above, then no concept or designs that attempt to reference other page code classes can work, since such code is no longer in memory (in scope) once such pages have been rendered. So, a desktop design approach as you have here will simply not work.
So, after code behind, then page travels back to the client side, is re-displayed, JavaScript is loaded, and THEN JavaScript starts running. So even the client side page now 100% re-loads.
Hence this:

Note again, the code on the server side has now been removed, dumped, and 100% disposed of. The code behind (page class) does not exist in memory once that page travels back to the client side).
document.opener.reload();csrWhere. Instead, you could pass the string and an array of SQL parameters.Sharedis (almost) always the wrong thing to use. And as Albert pointed out, the site doesn't work in the way you seem to think it does. You'll need a client-side solution so that JavaScript on one page can notify JavaScript on the other page to reload the data. If you can't use thewindow.parentorwindow.openerproperties, maybe try a BroadcastChannel.