Click here to Skip to main content
15,867,330 members
Articles / Web Development / ASP.NET
Tip/Trick

Gridview Sorting using attribute [Source Code]

Rate me:
Please Sign up or sign in to vote.
3.80/5 (11 votes)
30 Aug 2013CPOL 83.3K   28   30
Sorting GridView using attribute property of GridView

Introduction

Many developers who try to sort a GridView generally use the ViewState for maintaining the last position of the GridView. Here, I want to show you a new technique of doing this...

Here is my GridView code:

ASP.NET
<asp:GridView ID="GridView1" 
runat="server" AllowSorting="true" 
        AutoGenerateColumns="False" onsorting="GridView1_Sorting" 
        CurrentSortField="employeeid" CurrentSortDirection="ASC" 
        onrowcreated="GridView1_RowCreated" AllowPaging="true" 
        CaptionAlign="Bottom" onpageindexchanging="GridView1_PageIndexChanging" 
        onprerender="GridView1_PreRender" 
         PageSize="2">
      <Columns>
        <asp:BoundField  DataField="EmployeeId" HeaderText="Last Name"  
              ItemStyle-Width="15%" SortExpression="EmployeeId" >
        <ItemStyle Width="15%"></ItemStyle>
          </asp:BoundField>
        <asp:BoundField DataField="Name" 
        HeaderText="First Name"  ItemStyle-Width="15%" 
              SortExpression="Name"  >
             <ItemStyle Width="15%"></ItemStyle>
          </asp:BoundField>
        <asp:BoundField DataField="gender" 
        HeaderText="Email" ItemStyle-Width="15%" >
            <ItemStyle Width="15%"></ItemStyle>
          </asp:BoundField>
        <asp:TemplateField HeaderText="Change Password"  
        ItemStyle-Width="15%">

        <ItemTemplate>

            <asp:LinkButton ID="imgbtn1" 
            runat="server">change password</asp:LinkButton>
        </ItemTemplate>

             <ItemStyle Width="15%"></ItemStyle>
          </asp:TemplateField>
        <asp:BoundField DataField="city" 
        HeaderText="Date created"  ItemStyle-Width="15%">
             <ItemStyle Width="15%"></ItemStyle>
          </asp:BoundField>
        </Columns>
        <PagerSettings Mode="NextPreviousFirstLast" />
    </asp:GridView>

And I sort using the attribute property of the GridView.

See here, through attribute, I am maintaining last sorted record. Suppose last I sort asc then asc and if I last sorted desc then desc. This is how it works:

C#
private void GridView1_Sorting (GridView gridview, GridViewSortEventArgs e, 
         out SortDirection sortDirection, out string sortField)
{
    sortField = e.SortExpression;
    sortDirection = e.SortDirection;
    if (gridview.Attributes["CurrentSortField"] != null && 
         gridview.Attributes["CurrentSortDirection"] != null)
    {
        if (sortField == gridview.Attributes["CurrentSortField"])
        {
            if (gridview.Attributes["CurrentSortDirection"] == "ASC")
            {
                sortDirection = SortDirection.Descending;
            }
            else
            {
                sortDirection = SortDirection.Ascending;
            }
        }
        gridview.Attributes["CurrentSortField"] = sortField;
        gridview.Attributes["CurrentSortDirection"] = 
           (sortDirection == SortDirection.Ascending ? "ASC" : "DESC");
    }
}

Now you will get the last sorted and filed easily and it generally shows that while developing, there is too much load on the page using the viewstate.

Code Description

In sorting, you have two options asc/desc.

Now, if you are sorting by asc, then in gridview attribute add to CurrentSortDirection= asc.

When user clicks for the second time, we get value from CurrentSortDirection asc so now do desc and add CurrentSortDirection =desc.

Simple, but very useful.

I am sure this will definitely help you. If you still did not get it, take a look at the source code.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer
India India
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralMy vote of 2 Pin
ridoy26-Aug-13 4:28
professionalridoy26-Aug-13 4:28 
GeneralRe: My vote of 2 Pin
Dholakiya Ankit26-Aug-13 17:27
Dholakiya Ankit26-Aug-13 17:27 
GeneralRe: My vote of 2 Pin
Dholakiya Ankit26-Aug-13 21:29
Dholakiya Ankit26-Aug-13 21:29 
GeneralRe: My vote of 2 Pin
ridoy27-Aug-13 1:15
professionalridoy27-Aug-13 1:15 
GeneralRe: My vote of 2 Pin
Dholakiya Ankit27-Aug-13 1:38
Dholakiya Ankit27-Aug-13 1:38 
GeneralMy vote of 3 Pin
Manikandan Sekar21-Aug-13 22:11
professionalManikandan Sekar21-Aug-13 22:11 
GeneralRe: My vote of 3 Pin
Dholakiya Ankit22-Aug-13 18:00
Dholakiya Ankit22-Aug-13 18:00 
QuestionVote of 5 Pin
Leslie K.15-Aug-13 10:27
Leslie K.15-Aug-13 10:27 
AnswerRe: Vote of 5 Pin
Dholakiya Ankit15-Aug-13 17:22
Dholakiya Ankit15-Aug-13 17:22 
Questiondemo Pin
Dholakiya Ankit13-Aug-13 18:49
Dholakiya Ankit13-Aug-13 18:49 
AnswerRe: demo Pin
Joezer BH13-Aug-13 22:04
professionalJoezer BH13-Aug-13 22:04 
GeneralRe: demo Pin
Dholakiya Ankit13-Aug-13 22:16
Dholakiya Ankit13-Aug-13 22:16 
QuestionMy Vote of 3 Pin
SruthiR13-Aug-13 18:34
SruthiR13-Aug-13 18:34 
AnswerRe: My Vote of 3 Pin
Dholakiya Ankit13-Aug-13 18:36
Dholakiya Ankit13-Aug-13 18:36 
AnswerRe: My Vote of 3 Pin
Dholakiya Ankit13-Aug-13 23:07
Dholakiya Ankit13-Aug-13 23:07 
GeneralRe: My Vote of 3 Pin
SruthiR14-Aug-13 0:55
SruthiR14-Aug-13 0:55 
GeneralRe: My Vote of 3 Pin
Dholakiya Ankit14-Aug-13 1:20
Dholakiya Ankit14-Aug-13 1:20 
GeneralMy vote of 3 Pin
AlexCode6-Aug-13 20:56
professionalAlexCode6-Aug-13 20:56 
GeneralRe: My vote of 3 Pin
Dholakiya Ankit6-Aug-13 21:04
Dholakiya Ankit6-Aug-13 21:04 
GeneralMy vote of 1 Pin
Mehedi Hassan Mody5-Aug-13 22:32
Mehedi Hassan Mody5-Aug-13 22:32 
GeneralRe: My vote of 1 Pin
Dholakiya Ankit5-Aug-13 22:46
Dholakiya Ankit5-Aug-13 22:46 
GeneralMy vote of 3 Pin
HaBiX4-Aug-13 3:45
HaBiX4-Aug-13 3:45 
GeneralRe: My vote of 3 Pin
Dholakiya Ankit4-Aug-13 18:12
Dholakiya Ankit4-Aug-13 18:12 
but i have declared at top that this is new technique i did not tell you that there is no diff method i know about querystring but i found this one easier to user thanks.....
GeneralRe: My vote of 3 Pin
prakash.padariya20-Jan-14 19:18
prakash.padariya20-Jan-14 19:18 
GeneralRe: My vote of 3 Pin
Dholakiya Ankit3-Feb-14 15:42
Dholakiya Ankit3-Feb-14 15:42 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.