Solved

GridView Sorting

Posted on 2008-09-29
7
3,539 Views
Last Modified: 2013-11-08
Hi,

I am using SqlDataSource to bind data to Gridview....

i am forced to determined the query only dynamically..

so it is all done programatically...

I am having in issue with implementing a handler for sorting..

Can someone help me with a handler that works with SqlDataSource as the DataSource for GridView....

Also how can we get a DataTable from SqlDataSource
0
Comment
Question by:justin_smith
  • 4
  • 3
7 Comments
 
LVL 14

Expert Comment

by:jaiganeshsrinivasan
ID: 22603159
below is a code that i use for sorting...let me know if you need further help

DataTable dtViewData = new DataTable();
 

//this is the Sorting event of the grid view(data grid)...bind this even to you data grid...

    protected void grdView_Sorting(Object sender, GridViewSortEventArgs e)

    {
 

//this procedure call is to load you data grid ...like setting the data source etc...the code is also given below

        SearchControls();
 

        DataView dvSort = new DataView();

        dvSort = dtViewData.DefaultView;

//dtViewData is your data table - which in this case is loaded in teh function SearchControls

        string str = Convert.ToString(e.SortDirection);

        e.SortDirection = SortDirection.Ascending;
 

        ViewState.Add("SortCol", Convert.ToString(e.SortExpression));
 

        if (ViewState[e.SortExpression] != null)

        {

            if (Convert.ToString(ViewState[e.SortExpression]) == "Ascending")

            {

                e.SortDirection = SortDirection.Descending;

                ViewState[e.SortExpression] = "Desending";

                dvSort.Sort = e.SortExpression + " DESC";

            }

            else

            {

                e.SortDirection = SortDirection.Ascending;

                ViewState[e.SortExpression] = "Ascending";

                dvSort.Sort = e.SortExpression + " ASC";

            }

        }

        else

        { ViewState.Add(Convert.ToString(e.SortExpression), "Ascending"); dvSort.Sort = e.SortExpression + " ASC"; }
 

        grdView.DataSource = dvSort;

        grdView.DataBind();
 
 

    }

private void SearchControls(string sort)

{

        dtViewData = new DataTable();
 

        ssql = "your dynamic sql code goes here...";

        dtViewData = objDb.GetDataTable(CommandType.Text, ssql);
 

}

Open in new window

0
 

Author Comment

by:justin_smith
ID: 22603173
I will have to implement this way if nothing works..(cos i have to rewrite what i have do so far)
 but...

I am with you in use of DataView.

please let me know if this can be done..

1)Can i get DataView / DataTable object from GridView.DataSource
2)I am pretty sure this could be easily done if i initially used DataTable instead of SqlDataSource object



0
 
LVL 14

Expert Comment

by:jaiganeshsrinivasan
ID: 22603180
i think you can...

use it this way....

DataTable dt = (DataTable)YourGridViewName.DataSource;

Open in new window

0
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

 

Author Comment

by:justin_smith
ID: 22603187
this is what i get

Unable to cast object of type 'System.Web.UI.WebControls.SqlDataSource' to type 'System.Data.DataTable'.
0
 
LVL 14

Expert Comment

by:jaiganeshsrinivasan
ID: 22603208
Since you are assigning a SqlDataSource you probably might not be able to cast it directly...here is a link that might be helpful
http://www.developersdex.com/asp/message.asp?p=1116&r=6178158

if you can share your code i will look at it...
0
 

Accepted Solution

by:
justin_smith earned 0 total points
ID: 22603224
Hi Ganesh,

works now....in case someone wants to a helping hand.....

  SqlDataSource  ds= (SqlDataSource)  gv_RevenueReport.DataSource;
        DataView view = (DataView)ds.Select(new DataSourceSelectArguments());

                    view.Sort = e.SortExpression + " " +" DESC";

                    gv_RevenueReport.DataSource = view;
                    gv_RevenueReport.DataBind();



0
 
LVL 14

Expert Comment

by:jaiganeshsrinivasan
ID: 22603235
i am also using dynamic loading of a gridview wherein my query changes for each screen and my internal datagrid loading dynamically...i managed to achieve the loading time (15 records per view) in less than  a second for tables with more than a 100 thousand records....
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

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

For those of you who don't follow the news, or just happen to live under rocks, Microsoft Research released a beta SDK (http://www.microsoft.com/en-us/download/details.aspx?id=27876) for the Xbox 360 Kinect. If you don't know what a Kinect is (http:…
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…
Concerto provides fully managed cloud services and the expertise to provide an easy and reliable route to the cloud. Our best-in-class solutions help you address the toughest IT challenges, find new efficiencies and deliver the best application expe…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

914 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

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now