Hi, Tracy -
In all likelihood, somewhere, a dw.SetRow(1) method is being called.
Please be aware that the current row and the selected (highlighted) row can be different, because you can have more than one row selected, but only one row can be current - so the two don't always correlate.
With that in mind, you want to follow the code; If you examine the code in DW sort service (pfc_n_cst_dwsrv_sort), you'll see in both the pfc_Clicked (triggered when you click on a column heading) and the pfc_SortDlg (when you use the Sort dialog window) events call the of_Sort() object function in the sort service object to actually sort the rows in the DW.
In the of_Sort function, it invokes the Sort method in the DW, but it also subsequently triggers the pfc_RowChanged event in the DW. In pfc_u_dw's pfc_RowChanged event, you'll see where it triggers the pfc_RowChanged event in the Linkage service when linkage is being used, as it is in your case. In that event script, the pfc_RowFocusChanged event in the linkage service is triggered and the row number argument value passed in is the result of a DW.GetRow() call. This refreshes any detail/child DW's. Whew!
If in your case, since the detail DW is being refreshed to display the detail info linked to master DW row 1, then somewhere along the way the current row in the master DW is being set to row 1. I suggest using the debugger and setting a break point in pfc_u_dw's RowFocusChanging event... you'll get stopped there a few times along the way, but eventually, when the newrow argument value to this event comes in as 1, the call stack should tell you where the SetRow method is getting called from.
HTH, John