This may take a moment, but if anyone actually tries the test listed below they will see exactly what I mean, and thus may be able to help me resolve the situation.

I have developed (it's finished finally) my own Strongly Typed DataSet Generator, which not only included me having to re-write the VBCodeGenerator class (which for some foolish reason is yet again another Internal class in the .Net Framework that shouldn't be), but also involved a more advanced back-end than the simple TypedTableBase(of T). 
My Dataset generator creates my Dataset, Tables, Rows, and Table Adapters as descendants of my own Generic Data Model.  It utilizes some interfaces to commuicate back and forth anonymously between the DataTables and their subsequent Typed Adapters.  THis is extremely beneficial when recognizing that my adapters do not use the SqlDataAdapter for DataTable Fills.  (They can, as I made sure the Backwards compatibility was there for migration to this new system).  Primarily they utilize my own thread pooling manager and Asynchronous command objects to revert the entire typed dataset model into an Asynchronous data loader, that can either fill an entire table in a background thread, or using threads and database server wide stored-procedure model to paginate any table and load segments instead of the current (traditional) TableAdapter.Fill(DataTable) ... proceed to wait 5 minutes while 250,000 rows are loaded.  Also, there is a conditional loading system, which is usefull across relationship boundaries.  So using readerwriter locks, and semaphores and such, I have made this system intuitive to knowing that it's parent must be loaded first before the child is loaded.  Thus, the system evaluations what rows are wanted from the current table, determines what page(s) of that table contains those rows in the database.  KNowing the pages for the current table, if there are any parent tables (across relationships), it intrinsically requests that the parent table load any pages that contain the parent rows for all the rows in the selected pages from the child table.  It seems a little convoluted but this all happens automatically in upwards of 2 threads per adapter, so everything is smooth and clean, and one never has to wait for the data to load from the database while displaying the form interface for the tables.  As the updates occur, synchronized events trigger to make sure the main-threaded tables are populated on the fly and voila, no more 5+ minute wait times to load data.. 

If life and circumstance permits, I may one day be allowed to release this code as I believe it is one of the better things I have come up with.  :)

Know the history of course is superfluous, but it may help with my designer issue here, as the way one paginates a table in SQL is by providing a column or columns to sort by.  If I'm always sorting by column ID, then I can row_number() it and calculate a paging system based upon a determinate number of rows per page.  Currently, it's a bit of a back-end hack to do multiple columns, but for now, one will do for the user-designer interface.

My issue extends from this in the specific selection parameters of a DataColumn Property that is visible and editable in the Properties Grid Explorer. 
So on to the test, and if you try this you will see my issues quite clearly:

  • Make a quickie database, have a couple of tables (at least more than 1)  in it , maybe a column or two, no need to get fancy, we just need a couple of Typed DataTable's in the generated DataSet. (It doesn't matter that we are using the default MSDatasetGenerator)
  • Use the DataSet Designer to create the Tables and Adapters from the two or 3 tables in the Database (use the server explorer or the wizard, doesn't matter)
  • Extend one (preferably all) of the Partial Table Adapter Classes with the following property:
<Browsable(True), _
DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)> _
Public Property SortColumn As DataColumn
  Get
    Return _sortColumn
  End Get
  Set(ByVal value As DataColumn)
    _sortColumn = value
  End Set
End Property
  • Save the Project, then update the build number for the project and recompile.  (You may need to fully exit out of VS and reload the solution, VS is weird about the Caching issues of components)
  • Go to the initial Form1 for the project where we created this quickie dataset, and drop the Dataset and two of the Table Adapters onto the form.
Eventually you should be able to get it so the SortColumn property is visible from within the Properties Grid Editor for the individual TableAdapter Components that were dropped on the form. 
You will also see in the Form1.Designer.vb a line that goes: Me.Table1Adapter.SortColumn = Nothing

Now here are the Three things I am trying to resolve:

First:

What Is:

If you go to the SortColumn in the Properties Grid you will see a little "drop down" arrow for the combo box, but when you expand that a small tree will be visible displaying a + next to the DataSet and a (None) beneath it.  You can expand the DataSet and it shows all the tables in the dataset with +'s next to them, and within each table node are entries for each Column.

What I Want:
I want this list of columns to only show the columns for the table which this adapter controls.  IE: Table1, Table1Adapter, Table2, Table2Adapter, the Table2Adapter should only show columns from Table2, not from any other table as it currently does.

Second:

What Is:
After you select a Column from this expanded tree, (let us assume there is an ID column in Table1), the property grid changes, giving you a + next to the SortColumn Property, but the Second Column of the Property Grid is Blank, (empty).  Sure, you can expand that + and you'll see all the visible properties of the DataColumn, just as if you were viewing it in the DataSet designer (more or less).

What I Want:
I'd like that second window (where it normally lists the "value" of the property) to list the Column's Name, so for our example here, if I select the ID column of Table1 for the Table1Adapter.SortColumn value, I should see:  + SortColumn            ID

Third:

What Is:
After selecting the ID Column for Table1's TableAdapter's SortColumn, save it, and then view the entry for the the table adapter in the Form1.Designer.vb file.  Where the Line Used to Read:  Table1Adapter.SortColumn = Nothing, the line is gone.  Missing, no assignment whatsoever, the line disappears.  Which of course does us no good, as the value of that Property will not be set to anything when the program is run, regardless of the cached memory values the Designer Maintains throughout the development/design phase.

What I Want:
I would expect to achieve something of the affect:

Me.Table1Adapter.SortColumn = Me.DataSet1.Table1.IDColumn

I'm not sure if that is totally accurate to what would be "easiest".  Perhaps, a Me.DataSet1.Table1("ID") is more appropriate, utilizing the Column Name to look it up in the Column Collection instead of using the Direct "Typed Table" property.  the end result though, would be that through the Property Grid interface I could select the column from the Active dataset component on the form and have the property reflect the value in the designer.vb file. 

Any suggestions, solutions?

Thanks
Jaeden "Sifo Dyas" al'Raec Ruiner

"Never Trust a computer. Your brain is smarter than any micro-chip."