Well, you'll have to create a separate region where you have controls in which the user will specify filter values and then another control to activate your search routine.
You will then apply the search routine to each datagrid. I suggest a single function which accepts a struct and a datasource as a parameters (remember to pass these by value). Return a dataset which contains all the matches.
I dont understand your question regarding the focus. No control needs to have focus for you to search something as this happens in code, but to set focus to a specific control us: