One, I cannot sort on a custom value column.
This is because your custom property is more than likely not pulling from a column in the internal DataTable. You can create your own Comparer class to sort as you need. But in most cases, this has to do with the code behind the custom column.
and this may be .net related, when I close .net and open it again, my datagrid is filled in, not only with the columns that I had previously specified, but with everything from the BO added on, even copies of what I already had there. Does anyone have any idea how to fix either of these?
OK, you have something else going on here. Once a BO is destroyed, cleared, etc. there is no data in it any longer. So the BO MUST be populated before the grid can show any data. I do not know what type of grid you are using, but it sounds as if there is some type of serialization or caching going on here. I have never heard of something like this being done automatically. I have seen this type of functionality done programatically and intentionally, but not by accident.