Wrong Index after a datagrid is sorted -- Help!

J

Jason

I have a dataadapter that fills a dataset in an asp.net web application. A
DataGrid then pulls data from a dataview whose source is the dataset. All
of this works great.

When I click on 'edit' in the datagrid it returns the proper record (proper
primary key value of the record I'm editing). However, if I sort the
datagrid (via the built-in sorting headers) then click on 'edit' it returns
the original record, not the record now in the sorted place in the datagrid.
That is, if I have a datagrid displaying:

ID Name
================
9 George
3 Jane
6 Harry

and click on any ID it returns the proper index (ie. 9 or 3 or 6) --This is
working as it should. If I sort the data however,(by clicking on 'ID') and
get

ID Name
================
3 Jane
6 Harry
9 George

and click on '3' I always get ID=9 back which is the orginal value of that
index.

I'm sorting the data through a dataview with the following code:

Private Sub DataGrid1_SortCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles
DataGrid1.SortCommand

dvwParam.Sort = e.SortExpression

DataGrid1.DataSource = dvwParam

DataGrid1.DataBind()

End Sub

and when the a specific ID is click I'm getting that value by:

Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridCommandEventArgs) Handles
DataGrid1.EditCommand

'This is the value of the cell(1) a.k.a. ID in the datagrid

propChange_ID = CType(e.Item.Cells(1).Text, String)

End Sub

Am I missing a critical step to sync the dataview with the underlying
datagrid somehow? I'm performing a databind as shown in my Sort command so
I'm completely at a loss as to what's wrong with my code. Yes, I am
desparate at this point.

Thanks for any and all help in this.

Jay
 
S

Sanjeeva

Dont sort the dataview, and Check how you are obtaining the dataview.
The best way I know is
1 Get the Currency manager for datagrid..
2 Get the Dataview from this currency manager.

Ex:
CurrencyManager cm = (CurrencyManager) datagrid.BindingContext[
Datasource, Datamember ];
DataView dv = (DataView) cm.List;

This way the data view should work properly... and current index get always
from "cm.Position" property
and dont sort these things.


Regards,
Sanjeeva,
Proteans Software Solutions
Bangalore, India.
 
J

Jason

Thanks for your reply Sanjeeva,

It appears the Currency Manager is only for winforms, I'm using asp.net web
forms. Is there an equivalent?


Sanjeeva said:
Dont sort the dataview, and Check how you are obtaining the dataview.
The best way I know is
1 Get the Currency manager for datagrid..
2 Get the Dataview from this currency manager.

Ex:
CurrencyManager cm = (CurrencyManager) datagrid.BindingContext[
Datasource, Datamember ];
DataView dv = (DataView) cm.List;

This way the data view should work properly... and current index get always
from "cm.Position" property
and dont sort these things.


Regards,
Sanjeeva,
Proteans Software Solutions
Bangalore, India.


Jason said:
I have a dataadapter that fills a dataset in an asp.net web application. A
DataGrid then pulls data from a dataview whose source is the dataset. All
of this works great.

When I click on 'edit' in the datagrid it returns the proper record (proper
primary key value of the record I'm editing). However, if I sort the
datagrid (via the built-in sorting headers) then click on 'edit' it returns
the original record, not the record now in the sorted place in the datagrid.
That is, if I have a datagrid displaying:

ID Name
================
9 George
3 Jane
6 Harry

and click on any ID it returns the proper index (ie. 9 or 3 or 6) --This is
working as it should. If I sort the data however,(by clicking on 'ID') and
get

ID Name
================
3 Jane
6 Harry
9 George

and click on '3' I always get ID=9 back which is the orginal value of that
index.

I'm sorting the data through a dataview with the following code:

Private Sub DataGrid1_SortCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles
DataGrid1.SortCommand

dvwParam.Sort = e.SortExpression

DataGrid1.DataSource = dvwParam

DataGrid1.DataBind()

End Sub

and when the a specific ID is click I'm getting that value by:

Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridCommandEventArgs) Handles
DataGrid1.EditCommand

'This is the value of the cell(1) a.k.a. ID in the datagrid

propChange_ID = CType(e.Item.Cells(1).Text, String)

End Sub

Am I missing a critical step to sync the dataview with the underlying
datagrid somehow? I'm performing a databind as shown in my Sort command so
I'm completely at a loss as to what's wrong with my code. Yes, I am
desparate at this point.

Thanks for any and all help in this.

Jay
 

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