Solved

Sorting a bound dataset when the datagridview is sorted

Posted on 2006-07-03
5
550 Views
Last Modified: 2008-02-26
I have a dataset that is bound to a datagridview.  Not all of the columns in the dataset show in the datagridview (namely the ID value of some of the columns).  When the user double clicks on a datagridview row the program shows the information for the selected item.

When the datagridview is sorted by clicking on a column header the dataset isn't sorted and sometimes the wrong ID is used and thus the wrong information is shown.  How do I automatically have the dataset sort when the datagridview is sorted?

Here's some of my code for setting up the datagridview:

 Dim row As Data.DataRow

        ' Initialize a new instance of the data access base class
        objData = New DALBase

       
            ' Create columns
            objDataTable.Columns.Add("id")
            objDataTable.Columns.Add("contactID")
            objDataTable.Columns.Add("member")
            objDataTable.Columns.Add("property")
            objDataTable.Columns.Add("town")
            objDataTable.Columns.Add("state")
            objDataTable.Columns.Add("country")
            objDataTable.Columns.Add("acres")

            ' Get all customers in a DataReader object
            objData.SQL = "usp_SelectGroupProperties"
            objData.InitializeCommand()
            objData.OpenConnection()
            objData.DataReader = objData.Command.ExecuteReader

            ' See if there is any data before continuing
            If objData.DataReader.HasRows Then

                ' Process all rows
                While objData.DataReader.Read()
                    ' Add a new row to the dataset
                    row = objDataTable.NewRow
                    row("id") = objData.DataReader.Item("propertyID")
                    row("contactID") = objData.DataReader.Item("contactID")
                    row("member") = objData.DataReader.Item("contactName")
                    row("property") = objData.DataReader.Item("propertyName")
                    row("town") = objData.DataReader.Item("town")
                    row("state") = objData.DataReader.Item("state")
                    row("country") = objData.DataReader.Item("country")
                    row("acres") = objData.DataReader.Item("acres")
                    objDataTable.Rows.Add(row)
                End While
            End If

            objData.DataReader.Close()

            ' Make it so the datagrid doesn't automatically create the columns from the dataset table
            dgdMemberGroupProperty.AutoGenerateColumns = False
            dgdMemberGroupProperty.Columns.Clear()
            ' Assign the datasource for the data grid
            dgdMemberGroupProperty.DataSource = objDataTable
0
Comment
Question by:purfus
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
5 Comments
 
LVL 96

Expert Comment

by:Bob Learned
ID: 17033060
You can sort the DataTable:

objDataTable.DefaultView.Sort = "member ASC"

Bob
0
 
LVL 3

Author Comment

by:purfus
ID: 17036897
The sql that fills the dataset already orders the results by member.  What I want to happen is that when the user clicks on the datagridview header the dataset (or datatable, whichever one is more appropriate) would also be sorted to match how the datagridview is sorted.
0
 
LVL 34

Accepted Solution

by:
Sancler earned 500 total points
ID: 17037185
To the best of my knowledge and belief, datatables cannot be "sorted" other than by an ORDER clause in the SQL statement that fills them.  As datasets do not themselves directly hold data - they only hold the datatables that hold the data - the same is true of them, too.

You can, however, interpose a DataView between a datatable and any control displaying data from that datatable.  You just set the DataView's .Table property to the datatable concerned, and make the control's .DataSource the DataView rather than the datatable.  Or you simply use the datatable's .DefaultView as in TheLearnedOne's example.  And, as he points out, you can sort DataViews.

Roger
0
 
LVL 8

Expert Comment

by:kaliyugkaarjun
ID: 17040941
Hi

Pls check the following link

http://www.codeproject.com/aspnet/elphGrid.asp

hope it will help u

Cheers!!!
0
 
LVL 3

Author Comment

by:purfus
ID: 17055395
Thank you for the help.  I'll try these out.
0

Featured Post

PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Telerik RadEditor Control Save 8 39
Format Transaction Number 19 49
Broken .resx file generating errors 18 44
Create simple VB.net Add-in for Excel in Office 365 2 56
Parsing a CSV file is a task that we are confronted with regularly, and although there are a vast number of means to do this, as a newbie, the field can be confusing and the tools can seem complex. A simple solution to parsing a customized CSV fi…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below. https://filedb.experts-exchange.com/incoming/2017/03_w12/1151775/Permutations.txt https://filedb.experts-exchange.com/incoming/201…

734 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question