Hi uxmaan,
I have made a sample that full-fill your requirement.
Here i have used linq.
HTML
<asp:GridView ID="gvDates" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Id" HeaderText="Id" />
<asp:BoundField DataField="Date" HeaderText="Date" />
</Columns>
</asp:GridView>
Code
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
var currentNextDates = from DataRow dr in Dates.Rows
where (Convert.ToDateTime(dr[1]) >= DateTime.Now && Convert.ToDateTime(dr[1]) <= DateTime.Now.AddDays(1)) || Convert.ToDateTime(dr[1]).ToShortDateString().Equals(DateTime.Now.ToShortDateString())
orderby Convert.ToDateTime(dr[1])
select dr;
var remainingDates = from DataRow dr in Dates.Rows
where !Convert.ToDateTime(dr[1]).ToShortDateString().Equals(DateTime.Now.ToShortDateString()) && !Convert.ToDateTime(dr[1]).ToShortDateString().Equals(DateTime.Now.AddDays(1).ToShortDateString())
orderby Convert.ToDateTime(dr[1])
select dr;
var dates = currentNextDates.Union(remainingDates);
DataTable result = Dates.Clone();
foreach (DataRow item in dates.ToArray())
{
result.ImportRow(item);
}
this.gvDates.DataSource = result;
this.gvDates.DataBind();
}
}
private DataTable Dates
{
get
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[2] {
new DataColumn("Id",typeof(int)),
new DataColumn("Date",typeof(DateTime))});
dt.Rows.Add(1, "08/01/2015");
dt.Rows.Add(2, "08/02/2015");
dt.Rows.Add(3, "08/03/2015");
dt.Rows.Add(4, "08/04/2015");
dt.Rows.Add(5, "08/05/2015");
dt.Rows.Add(6, "08/06/2015");
dt.Rows.Add(7, "08/07/2015");
dt.Rows.Add(8, "08/08/2015");
dt.Rows.Add(9, "08/09/2015");
dt.Rows.Add(10, "08/10/2015");
dt.Rows.Add(11, "09/01/2015");
dt.Rows.Add(12, "09/02/2015");
dt.Rows.Add(13, "09/03/2015");
dt.Rows.Add(14, "08/11/2015");
dt.Rows.Add(15, "08/12/2015");
dt.Rows.Add(16, "08/13/2015");
dt.Rows.Add(17, "08/06/2015");
return dt;
}
}
Screenshot

Hope this will help you.