Hey Vince,
Basically, when you use a method within the PopulationDataSourceSettings that requires parameters, you have to pass the parameters through either the Requery() method on the list view, or through the ListPopulating event like this:
Requery():
ListView1.Requery(BOContainingRecords, BusinessCloneDataType.ClearAndFillFromCompleteTable)
ListPopulating event:
Private Sub ListView1_ListPopulating(ByVal e As MicroFour.StrataFrame.UI.ListPopulatingEventArgs) Handles ListView1.ListPopulating
e.Parameters(0).Value = BOContainingRecords
e.Parameters(1).Value = BusinessCloneDataType.ClearAndFillFromCompleteTable
End Sub
When the list populates, it creates it's own instance of the business object type you selected within the PopulationDataSourceSettings and executes the method on it. So, the CopyDataFrom method is going to be called on the temporary business object within the list, copying the records from the business object you want into the temp one. The list is then built from the temp one. So, you have to use one of those 2 methods (but not both) to specify the parameters for the method that is executing.
As for your second problem, you might change this line:
Me.Location1.NavigateToPrimaryKey(CType(Me.ListView1.SelectedItems("id").Tag, Integer))
to this:
Me.Location1.NavigateToPrimaryKey(CType(Me.ListView1.SelectedItems(0).Tag, Integer))
I'm not sure what it's going to do when you try to get the selected item with "id". The SelectedItems property is just a collection, so calling SelectedItems(0) just gets the first one within the collection. Give that a shot and let me know how it works.