Sure, it is actually quite simple. As you may have already learned, the BO has several exposed properties within the BO: CurrentDataTable, CurrentView, CUrrentRow, and CurrentRowIndex. All of the BOs logic surrounds the CurrentView which is a DataView (CurentDataTable.DefaultView is the same reference). The sort on a DataView is dynamic, so as soon as you add a new record (or modify a field within the sort), the view will "reshuffle" to match the updated values.
Example:
DataView Index | cust_FirstName | cust_LastName |
0 | Joe | Smith |
1 | Trent | Taylor |
If I add a new record and have a sort of (cust_LastName, cust_FirstName), the instant that the new row is added to the DataTable (which in turn is added to the view), the sort is effective and resorts the list:
DataView Index | cust_FirstName | cust_LastName |
0 | (empty) | (empty) |
1 | Joe | Smith |
2 | Trent | Taylor |
However, the CurrentRowIndex of the BO is still set to 0 since the BO has not actually navigated....so if you were to call a BO.Refresh() all of the fields would reflect the newly added record...but instead, you are only seeing changes to the fields that are changing which made it look like it was updating two records at once.
The Sort is a great feature and we use it often, but when you use Sort and Filter, you need to take into account new and modified records otherwise you will have strange behavior...I have chansed my tail more than once for this reason.