Dan,
Without requoting your message here, cuz it was big, I have a design suggestion for you that may help with your problem.
Essentially, amke the grid responsible for its own data. In teh grid's Refresh mevent put this code (pseudo code is here, use your vars and view name);
* Grid refresh
lcParm1 = THISFOR.PageFrame1.Page3.List1.Value && or whatever
lcParm2 = THISFORM.PageFrame1.Page3.Combo1.Value && or whatever
* lcParm1 and lcParm2 are the names of your veiw parameters
* Now requery the view
Requery("MyView")
Now all you ahve to do in the controls of page three, in their interactivechange event, is to THISFORM.PageFrame1.Page2.Grid1.Refresh()
Also, in the form's Init after the default values of the controls on page 3 hae been set call the grid's refresh to populate it.
In the fomr's Dataenvironment set the views NoDataOnLoad property to .T. to prevent the dialog during the laod of the form.