I have solved it in this way. Though it looks bit clumsy but some how it solved the problem.
protected void RepeaterBind(int pageindex, int pagesize, int totalrows)
{
int j=1;
int k = 1;
int l;
int mod;
mod = (pageindex / 25);
int totalpages = totalrows / pagesize;
if ((totalrows % pagesize) != 0)
{
totalpages += 1;
}
List<ListItem> pages = new List<ListItem>();
if (totalpages > 1)
{
if (pageindex == 0)
{
for (int i = k; i <= 26; i++)
{
if (i <= 25)
{
pages.Add(new ListItem(i.ToString(), i.ToString(), i != (pageindex + 1)));
}
else
{
pages.Add(new ListItem("...", (i).ToString(), true));
pages.Add(new ListItem(totalpages.ToString(), totalpages.ToString(), true));
break;
}
}
}
if (mod != 0 && pageindex!=0)
{
pages.Add(new ListItem(j.ToString(), j.ToString(), true));
pages.Add(new ListItem("...", (mod*25).ToString(), true));
l = (totalpages / 25)-(pageindex / 25);
if (l >= 2 )
{
for (int i = ((25 * (mod)) + 1); i <= (((25 * (mod)) + 1) + 25); i++)
{
if (i <= (((25 * (mod)) + 1) + 24))
{
pages.Add(new ListItem(i.ToString(), i.ToString(), i != (pageindex + 1)));
}
else
{
pages.Add(new ListItem("...", (i).ToString(), true));
pages.Add(new ListItem(totalpages.ToString(), totalpages.ToString(), true));
break;
}
}
}
else
{
if (l == 1 && ((pageindex % 5) == 4))
{
for (int i = ((25 * (mod)) + 1); i <= (((25 * (mod)) + 1) + 25); i++)
{
if (i <= (((25 * (mod)) + 1) + 24))
{
pages.Add(new ListItem(i.ToString(), i.ToString(), i != (pageindex + 1)));
}
else
{
pages.Add(new ListItem("...", (i).ToString(), true));
pages.Add(new ListItem(totalpages.ToString(), totalpages.ToString(), true));
break;
}
}
}
else
{
for (int i = ((25 * (mod)) + 1); i <= totalpages; i++)
{
pages.Add(new ListItem(i.ToString(), i.ToString(), i != (pageindex + 1)));
}
}
}
}
else if (mod == 0 && pageindex != 0)
{
for (int i = k; i <= 26; i++)
{
if (i <= 25)
{
pages.Add(new ListItem(i.ToString(), i.ToString(), i != (pageindex + 1)));
}
else
{
pages.Add(new ListItem("...", (i).ToString(), true));
pages.Add(new ListItem(totalpages.ToString(), totalpages.ToString(), true));
break;
}
}
}
}
RepeaterForPaging.DataSource = pages;
RepeaterForPaging.DataBind();
}