• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 272
  • Last Modified:

how to sort asp:gridview when headers are clicked?

i have my gridView code below. everything works fine and now i want to add sorting as a feature to the grid. i have AllowSorting="True" and i added SortExpression="fieldName" to the bound fields i want to make sortable.

im stuck in getting the server side of this figured out.

any help (c# please)?
<asp:GridView ID="gvMilestone" runat="server" AutoGenerateColumns="False" AllowSorting="True"
    AutoGenerateSelectButton="True" CellPadding="4" ForeColor="#333333" GridLines="None"
    Font-Size="8pt" OnRowCommand="GridView_RowCommand" DataKeyNames="ProjectMilestoneId">
    <RowStyle BackColor="#EFF3FB" /> 
        <asp:BoundField HeaderText="ProjectMilestoneID" DataField="ProjectMilestoneId" />
        <asp:BoundField HeaderText="ProjectId" DataField="ProjectId" />
        <asp:BoundField HeaderText="MilestoneCID" DataField="MileStoneCID" />
        <asp:BoundField HeaderText="Milestone" DataField="MilestoneText" SortExpression="MilestoneText" />
        <asp:BoundField HeaderText="Start Date" DataField="StartDate" SortExpression="StartDate"
            HtmlEncode="false" DataFormatString="{0:dd-MMM-yyyy}" />
        <asp:BoundField HeaderText="End Date" DataField="EndDate" SortExpression="EndDate"
            HtmlEncode="false" DataFormatString="{0:dd-MMM-yyyy}" />
        <asp:BoundField HeaderText="RAGStatusCID" DataField="RAGStatusCID" />
        <asp:BoundField HeaderText="RAG Status" DataField="RAGStatusText" SortExpression="RagStatusText" />
        <asp:BoundField HeaderText="CompletionStatusCID" DataField="CompletionStatusCID" />
        <asp:BoundField HeaderText="Status" DataField="CompletionStatusText" />
        <asp:BoundField HeaderText="StatusText" DataField="StatusText" />
        <asp:BoundField HeaderText="Reporting Priority" DataField="ReportingPriority" SortExpression="ReportingPriority" />
        <asp:BoundField HeaderText="Added" DataField="Added" SortExpression="Added" HtmlEncode="false"
            DataFormatString="{0:dd-MMM-yyyy hh:ss:mm tt}" />
        <asp:BoundField HeaderText="Last Update" DataField="LastUpdate" SortExpression="LastUpdate"
            HtmlEncode="false" DataFormatString="{0:dd-MMM-yyyy hh:ss:mm tt}" />
        <asp:BoundField HeaderText="Update By" DataField="UpdateBy" SortExpression="UpdateBy" />
    <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
    <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
    <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
    <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
    <EditRowStyle BackColor="#2461BF" />
    <AlternatingRowStyle BackColor="White" />

Open in new window

1 Solution
Anil GolamariCommented:
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)    {              bindGridView(e.SortExpression, sortOrder);    
    public string sortOrder
       get        {
           if (ViewState["sortOrder"].ToString() == "desc")        
    ViewState["sortOrder"] = "asc";        
     ViewState["sortOrder"] = "desc";      
    return ViewState["sortOrder"].ToString();    
    }        set    
       ViewState["sortOrder"] = value;  
     }    }

For reference:

realcodingAuthor Commented:
great link.
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

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

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