How do I prevent excess SQL Queries on refresh, while maintaining the contents of a selection grid?

For context:

I have a screen with 3 search parameters. Facility, WorkCenter and WorkCenterName. These are all query parameters.

Next to the WorkCenter textbox is a button. The button opens a popup with a selection grid. The grid allows the user select a WorkCenter. Based on the selection, It then auto-fills the WorkCenter and WorkCenterName text boxes in the original screen.

The user is then, supposed click on the search button, or hit the "Enter" key to begin the search (SQL Query) and refresh the screen. 

The problem is as follows:

1. When the user clicks the popup button, the screen refreshes and runs the SQL query.

2. When the user selects an entry inside the popup, then clicks the "confirm selection" button, the screen refreshes and runs the SQL query.

For this screen specifically, it is technically not a major issue. However, this same user experience is required for other screens and we need to unify how users interact with search screens.

Due to the size of the databases being queried on these other screens, this can significantly slow down the operator's work. Especially if the SQL query runs extra times when it really does not need to.

The goal is to have the Selection Grid's SQL query run only when the "Search" button is pressed. 
The screen should also retain the data that was displayed previously, until the search button is pressed again.

The best case scenario would be that the screen does not refresh at all, unless the "Search" button is pressed. However, I'm not sure I can enforce that while also allowing the popup to automatically enter the WorkCenter & WorkCenterName parameters.

Any ideas would be greatly appreciated.