Sorting a Strong Typed Dataset

G

Guest

Hi, I am looking for a way to sort a strong typed dataset. It would seem the most straightforward way is to use a dataview. The only problem is when I use the dataview I seem to loose the strong typed properties from my original dataset

Anyone that can point me to an example of how to sort my dataset and maintain the use of my typed properties would be greatly appreciated

Thank,
Freeo

Also here is a little more detial from the orig post in the general vb section

Right, I can use the .sort property change the order rows are accessed in the dataview. This works great but I loose the Strong Typed Names from the original dataset (unless I'm missing something) when I use the dataview

'************************
'Here is a quick sample (Unsorted)
Dim drHeader As CUnit.HeaderRo
Dim objUnits As New CUnit(ConnectionString) 'This is a Strong Typed Dataset (.xsd
objUnits.Loa

For Each drHeader In objUnits.Heade
Writeline drHeader.LK_I
Nex

'************************
'Now Here is the sorted example where I loose Strong Typed Properties from the Unit Datase
Dim drHeader As DataRowVie
Dim objUnits As New CUnit(ConnectionString) 'This is a Strong Typed Dataset (.xsd
objUnits.Loa

Dim dvHeader as New DataView(objUnits.Header
dvHeader.Sort = "LK_id desc

For Each drHeader In dvHeade
Writeline drHeader("LK_ID") 'This works but I lost the ability to use the typed property name (LK_ID)
Nex
'************************

The second example is 90% of what I want to do.

Just incase the 10% is not so clear this is how you access a non-typed datase
Writeline drHeader("LK_ID"
and this is how you access a typed dataset
Writeline drHeader.LK_I

I can't figure out how to sort a dataset while maintaining the typed property names. Usually I would not care, but I have allot of class' that need to be sorted a second way and don't want to rewrite all the UI translation code

Thanks in advance
Freeo
 
M

Miha Markic [MVP C#]

Hi Freeon,

Each DataRowView has Row property which you can cast to appropriate row type
to get strong typed rows.

HTH,
--
Miha Markic [MVP C#] - RightHand .NET consulting & development
miha at rthand com
www.rthand.com

Freeon said:
Hi, I am looking for a way to sort a strong typed dataset. It would seem
the most straightforward way is to use a dataview. The only problem is when
I use the dataview I seem to loose the strong typed properties from my
original dataset.
Anyone that can point me to an example of how to sort my dataset and
maintain the use of my typed properties would be greatly appreciated.
Thank,
Freeon

Also here is a little more detial from the orig post in the general vb section:

Right, I can use the .sort property change the order rows are accessed in
the dataview. This works great but I loose the Strong Typed Names from the
original dataset (unless I'm missing something) when I use the dataview.
'*************************
'Here is a quick sample (Unsorted):
Dim drHeader As CUnit.HeaderRow
Dim objUnits As New CUnit(ConnectionString) 'This is a Strong Typed Dataset (.xsd)
objUnits.Load

For Each drHeader In objUnits.Header
Writeline drHeader.LK_ID
Next

'*************************
'Now Here is the sorted example where I loose Strong Typed Properties from the Unit Dataset
Dim drHeader As DataRowView
Dim objUnits As New CUnit(ConnectionString) 'This is a Strong Typed Dataset (.xsd)
objUnits.Load

Dim dvHeader as New DataView(objUnits.Header)
dvHeader.Sort = "LK_id desc"

For Each drHeader In dvHeader
Writeline drHeader("LK_ID") 'This works but I lost the ability to
use the typed property name (LK_ID).
Next
'*************************

The second example is 90% of what I want to do.

Just incase the 10% is not so clear this is how you access a non-typed dataset
Writeline drHeader("LK_ID")
and this is how you access a typed dataset:
Writeline drHeader.LK_ID


I can't figure out how to sort a dataset while maintaining the typed
property names. Usually I would not care, but I have allot of class' that
need to be sorted a second way and don't want to rewrite all the UI
translation code.
 
G

Guest

Thanks Miha

The cast code looks like this
Dim objTypedRow As CUnit.HeaderRow = CType(drHeader.Row, CUnit.HeaderRow
Debug.WriteLine(objTypedRow.LK_ID

Any idea if this kind of casting will offset speed improvemets gained by using the typed datasets

Thanks again
Freeo


----- Miha Markic [MVP C#] wrote: ----

Hi Freeon

Each DataRowView has Row property which you can cast to appropriate row typ
to get strong typed rows

HTH
--
Miha Markic [MVP C#] - RightHand .NET consulting & developmen
miha at rthand co
www.rthand.co

Freeon said:
Hi, I am looking for a way to sort a strong typed dataset. It would see
the most straightforward way is to use a dataview. The only problem is whe
I use the dataview I seem to loose the strong typed properties from m
original datasetthe dataview. This works great but I loose the Strong Typed Names from th
original dataset (unless I'm missing something) when I use the dataview
'Here is a quick sample (Unsorted)
Dim drHeader As CUnit.HeaderRo
Dim objUnits As New CUnit(ConnectionString) 'This is a Strong Type Dataset (.xsd
objUnits.Loa
Writeline drHeader.LK_I
Nex
'Now Here is the sorted example where I loose Strong Typed Properties fro the Unit Datase
Dim drHeader As DataRowVie
Dim objUnits As New CUnit(ConnectionString) 'This is a Strong Type Dataset (.xsd
objUnits.Loa
Writeline drHeader("LK_ID") 'This works but I lost the ability t
use the typed property name (LK_ID)
Nex
'************************ datase
Writeline drHeader("LK_ID"
and this is how you access a typed dataset
Writeline drHeader.LK_I
property names. Usually I would not care, but I have allot of class' tha
need to be sorted a second way and don't want to rewrite all the U
translation code
 
M

Miha Markic [MVP C#]

Hi Freeon,

There are no speed improvements when using strong typed datasets. Actually,
there is a penalty of using them because strong typed dataset is derived
from dataset and has some overhead code to bring you strong type.
Of course it isn't a big penality - it is very very small.
Also, your casting is not an issue.

--
Miha Markic [MVP C#] - RightHand .NET consulting & development
miha at rthand com
www.rthand.com

Freeon said:
Thanks Miha,

The cast code looks like this:
Dim objTypedRow As CUnit.HeaderRow = CType(drHeader.Row, CUnit.HeaderRow)
Debug.WriteLine(objTypedRow.LK_ID)

Any idea if this kind of casting will offset speed improvemets gained by using the typed datasets?

Thanks again,
Freeon


----- Miha Markic [MVP C#] wrote: -----

Hi Freeon,

Each DataRowView has Row property which you can cast to appropriate row type
to get strong typed rows.

HTH,
--
Miha Markic [MVP C#] - RightHand .NET consulting & development
miha at rthand com
www.rthand.com

Freeon said:
Hi, I am looking for a way to sort a strong typed dataset. It
would seem
the most straightforward way is to use a dataview. The only problem is when
I use the dataview I seem to loose the strong typed properties from my
original dataset. and
maintain the use of my typed properties would be greatly appreciated. general vb
section: accessed in
the dataview. This works great but I loose the Strong Typed Names from the
original dataset (unless I'm missing something) when I use the dataview.
'Here is a quick sample (Unsorted):
Dim drHeader As CUnit.HeaderRow
Dim objUnits As New CUnit(ConnectionString) 'This is a Strong
Typed
Dataset (.xsd)
objUnits.Load
Writeline drHeader.LK_ID
Next
'Now Here is the sorted example where I loose Strong Typed
Properties from
the Unit Dataset
Dim drHeader As DataRowView
Dim objUnits As New CUnit(ConnectionString) 'This is a Strong
Typed
Dataset (.xsd)
objUnits.Load
Writeline drHeader("LK_ID") 'This works but I lost the
ability to
use the typed property name (LK_ID).
Next
'*************************
non-typed
dataset
Writeline drHeader("LK_ID")
and this is how you access a typed dataset:
Writeline drHeader.LK_ID
typed
property names. Usually I would not care, but I have allot of class' that
need to be sorted a second way and don't want to rewrite all the UI
translation code.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top