This is not a problem - system doesn't know how to display your container, that's why it populates it it the tree view.
This is redundant:
X++:
con = [set.pack()];
table.Field= con;
You need only this:
X++:
table.Field= set.pack();
As I can see you don't know for sure, how many rows you'll get selected in List view
If you want to display selected items in grid, you will have to create child table and join it with parent using specified key. Child table will contain records with selected list view items.
Also you can display rows, creating another list view or tree view, depending on what you need.
If you describe the purpose of displaying container in grid in detai, solution can be more obvious