PC Review


Reply
Thread Tools Rate Thread

datagrid dataset dataview datatable sorting

 
 
Nathan Franklin
Guest
Posts: n/a
 
      19th Jan 2006
Hello Guys,

I have been trying to work this our for so long, but I just can't seem to
find the answer.

I am loading a datatable from a an access database using an
oledbdataadapter. I then assign the datatable.dataview to my
datagrid.datasource member so it will display my results..

I need to give the user an option to change the order of this data, I have a
field in my datagrid called OrderID, which is just basically an int column
which I loop through and set.

When the user selects a row in the data grid and then presses a button to
move that row up, I loop through the dataview and update the OrderID for
each row to reflect the changes. I then need to sort the dataview again by
OrderID. The problem with this is it isnt working.... I dont know why but
below is a copy of my code...

Any help would be great!! thanks so much guys

I hoipe the code makes sense.... if you want to simplify it i will...

--Nath

Dim dsExtendedDataSet as DataSet

Sub LoadData

If Not dsExtendedDataSet.Tables.Contains("ExtendedDataSetData") Then
dsExtendedDataSet.Tables.Add("ExtendedDataSetData")

Dim ExTable As DataTable = dsExtendedDataSet.Tables("ExtendedDataSetData")
ExTable.Columns.Add("INTERNAL_ID")
ExTable.Columns("INTERNAL_ID").AutoIncrement = True
ExTable.Columns("INTERNAL_ID").AutoIncrementSeed = 1

' setup primary key
Dim PrimaryKeyColumn(0) As DataColumn
PrimaryKeyColumn(0) = ExTable.Columns("INTERNAL_ID")
ExTable.PrimaryKey = PrimaryKeyColumn

Sql = "Select ID,ItemName,FieldType,ShowConditionOption,OptionSet,OrderID
From ExtendedDataSetData Where ParentDataSetID=" & treeNode.Tag & " Order By
OrderID"
da = New OleDbDataAdapter(Sql, dbConn.db)
da.Fill(dsExtendedDataSet, "ExtendedDataSetData")

' make sure are field are properly setup
ExTable.Columns("ID").ReadOnly = True
ExTable.Columns("OrderID").AutoIncrement = True

ExTable.DefaultView.Sort = "OrderID"
dgExtendedDataSets.DataSource = ExTable.DefaultView

End Sub

Private Sub btnExMoveUp_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnExMoveUp.Click
' we need to move the current select row of the extended data set up
one...
Try
If Not dsExtendedDataSet Is Nothing Then
If dsExtendedDataSet.Tables.Contains("ExtendedDataSetData")
Then
If
dsExtendedDataSet.Tables("ExtendedDataSetData").DefaultView Is
dgExtendedDataSets.DataSource Then
' check to make sure it isnt the first item in the
list
If Not dgExtendedDataSets.CurrentRowIndex = 0 Then
' we can move this item up...
' we change the order id column value of this
item to the item just above it....
Dim dT As DataTable
dT =
dsExtendedDataSet.Tables("ExtendedDataSetData")

dgExtendedDataSets.AllowSorting = True
' turn sorting off
dT.DefaultView.Sort = "OrderID"

' renumber our OrderID fields to reflect the move of the row...
RewriteExtendedDataSetOrderID(dT)

dgExtendedDataSets.DataSource = Nothing
dgExtendedDataSets.DataSource = dT.DefaultView
dT.DefaultView.Sort = "OrderID"


' refresh our data grid
dgExtendedDataSets.Refresh()
'dgExtendedDataSets.Update()

dgExtendedDataSets.AllowSorting = False
End If
End If
End If
End If
Catch ex As Exception
HandleError(ex, "trvInteriorDataSetSelect_BeforeSelect")
End Try
End Sub


Private Sub RewriteExtendedDataSetOrderID(ByRef dT As DataTable)

' this sub will loop through our extended data set view
' and rewrite the OrderID data for each record...
' this makes sure that everything is syncd and in order when we move
it back to the db

'NOTE: Can THROW exeption

Dim dv As DataView
dv = dT.DefaultView

' set the orderid field for each row...
' because there arnt many fields in the extendeddat sets data
' loop through the rows backward

Dim SetNextValueNewOrder As Boolean = False ' this variable will
tell our program to set a new order for this item and not just the standard
value of I
Dim I As Int16
Dim A As Int16
For I = dv.Count - 1 To 0 Step -1
If dgExtendedDataSets.CurrentRowIndex = I Then
' this is the item we are moving
dv.Item(I).Item("OrderID") = I - 1
SetNextValueNewOrder = True
Else
If SetNextValueNewOrder Then
SetNextValueNewOrder = False
' this was the item before our row above before we moved
it up
' set this row to be one greater order id so the
previous row will be above it
dv.Item(I).Item("OrderID") = I + 1
Else
' set this items Order to be equal to I
dv.Item(I).Item("OrderID") = I
'For A = 0 To dT.Rows.Count - 1
' If dv.Item(I).Item("INTERNAL_ID") =
dT.Rows(A).Item("INTERNAL_ID") Then
' MsgBox(dv.Item(I).Item("OrderID") & ", " &
dT.Rows(A).Item("OrderID"))
' End If
'Next
End If
End If
Next

' finally re-order our view
dv.Sort = "OrderID"
End Sub


 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
DataTable -> DataView -> Sort -> DataGrid : need related DataTable index Diamonds Microsoft ADO .NET 4 28th Jun 2006 08:23 PM
Strongly typed dataset, sorted by dataview, how to get dataset's row index from dataview? Thomas H Microsoft ADO .NET 2 9th Mar 2006 04:04 PM
Problem Hiding Columns when Populating a Datagrid with a DataView of A DataTable From Dataset returned via an Asynchronous Web-Service Bob Davies Microsoft Dot NET Framework Forms 1 20th Nov 2004 05:56 AM
Dataset, Datatable,Dataview,Datagrid - release memory =?Utf-8?B?c2xhcHJhZGU=?= Microsoft VB .NET 4 1st Jul 2004 10:02 AM
Sorting datagrid-dataview-datatable =?Utf-8?B?c3ViVA==?= Microsoft ADO .NET 2 27th May 2004 03:56 PM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 05:12 AM.