Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 3606
  • Last Modified:

GridView Sorting

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
justin_smith
Asked:
justin_smith
  • 4
  • 3
1 Solution
 
Jai STech ArchCommented:
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
 
justin_smithAuthor Commented:
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
 
Jai STech ArchCommented:
i think you can...

use it this way....

DataTable dt = (DataTable)YourGridViewName.DataSource;

Open in new window

0
The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

 
justin_smithAuthor Commented:
this is what i get

Unable to cast object of type 'System.Web.UI.WebControls.SqlDataSource' to type 'System.Data.DataTable'.
0
 
Jai STech ArchCommented:
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
 
justin_smithAuthor Commented:
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
 
Jai STech ArchCommented:
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
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

  • 4
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now