Hi riyaz,
Refer the below sample code.
HTML
<asp:GridView ID="gvBeforeSorting" runat="server" AutoGenerateColumns="false" Caption="Before Sorting">
<Columns>
<asp:BoundField DataField="Month" HeaderText="Month" />
<asp:BoundField DataField="totalvalue" HeaderText="totalvalue" />
</Columns>
</asp:GridView>
<br />
<br />
<asp:GridView ID="gvAfterSorting" runat="server" AutoGenerateColumns="false" Caption="After Sorting">
<Columns>
<asp:BoundField DataField="Month" HeaderText="Month" />
<asp:BoundField DataField="totalvalue" HeaderText="totalvalue" />
</Columns>
</asp:GridView>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[2] { new DataColumn("Month"), new DataColumn("totalvalue") });
dt.Rows.Add("Jan-2017", "56124.00");
dt.Rows.Add("Aug-2017", "12334.00");
dt.Rows.Add("Oct-2016", "45345.00");
dt.Rows.Add("Dec-2017", "45000.00");
dt.Rows.Add("Jun-2016", "61240.00");
dt.Rows.Add("Jan-2016", "12124.00");
dt.Rows.Add("Feb-2017", "32124.00");
gvBeforeSorting.DataSource = dt;
gvBeforeSorting.DataBind();
DataTable dtNew = dt.Clone();
dtNew.Columns.Add("EnumMonth", typeof(int));
dtNew.Columns.Add("Year", typeof(int));
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow dr = dtNew.NewRow();
dr["Month"] = dt.Rows[i]["Month"];
dr["totalvalue"] = dt.Rows[i]["totalvalue"];
dr["EnumMonth"] = (int)Enum.Parse(typeof(Months), dt.Rows[i]["Month"].ToString().Split('-')[0]);
dr["Year"] = dt.Rows[i]["Month"].ToString().Split('-')[1];
dtNew.Rows.Add(dr);
}
IEnumerable<DataRow> result = dtNew.AsEnumerable().OrderBy(m => m.Field<int>("Year")).ThenBy(m => m.Field<int>("EnumMonth"));
gvAfterSorting.DataSource = result.CopyToDataTable();
gvAfterSorting.DataBind();
}
}
public enum Months { Jan = 1, Feb = 2, Mar = 3, Apr = 4, May = 5, Jun = 6, July = 7, Aug = 8, Sep = 9, Oct = 10, Nov = 11, Dec = 12 }
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Dim dt As New DataTable()
dt.Columns.AddRange(New DataColumn(1) {New DataColumn("Month"), New DataColumn("totalvalue")})
dt.Rows.Add("Jan-2017", "56124.00")
dt.Rows.Add("Aug-2017", "12334.00")
dt.Rows.Add("Oct-2016", "45345.00")
dt.Rows.Add("Dec-2017", "45000.00")
dt.Rows.Add("Jun-2016", "61240.00")
dt.Rows.Add("Jan-2016", "12124.00")
dt.Rows.Add("Feb-2017", "32124.00")
gvBeforeSorting.DataSource = dt
gvBeforeSorting.DataBind()
Dim dtNew As DataTable = dt.Clone()
dtNew.Columns.Add("EnumMonth", GetType(Integer))
dtNew.Columns.Add("Year", GetType(Integer))
For i As Integer = 0 To dt.Rows.Count - 1
Dim dr As DataRow = dtNew.NewRow()
dr("Month") = dt.Rows(i)("Month")
dr("totalvalue") = dt.Rows(i)("totalvalue")
dr("EnumMonth") = CInt([Enum].Parse(GetType(Months), dt.Rows(i)("Month").ToString().Split("-"c)(0)))
dr("Year") = dt.Rows(i)("Month").ToString().Split("-"c)(1)
dtNew.Rows.Add(dr)
Next
Dim result As IEnumerable(Of DataRow) = dtNew.AsEnumerable().OrderBy(Function(m) m.Field(Of Integer)("Year")).ThenBy(Function(m) m.Field(Of Integer)("EnumMonth"))
gvAfterSorting.DataSource = result.CopyToDataTable()
gvAfterSorting.DataBind()
End If
End Sub
Public Enum Months
Jan = 1
Feb = 2
Mar = 3
Apr = 4
May = 5
Jun = 6
July = 7
Aug = 8
Sep = 9
Oct = 10
Nov = 11
Dec = 12
End Enum
Screenshot
