بعید میدنم فرقی بکنه :
من معمولا از این روش برای paging استفاده مکینم ، ولی خوب میشه بهینه ترش هم کرد :
PagedDataSource pds = new PagedDataSource();
pds.DataSource = ObjectDataSource1.Select();
pds.AllowPaging = true;
pds.PageSize = Convert.ToInt32(ComboCount.SelectedValue);
int cur;
int count = 0;
decimal PdsCount = Convert.ToDecimal(pds.DataSourceCount) / Convert.ToDecimal(pds.PageSize);
String s = PdsCount.ToString();
String[] test = s.Split('.');
if (test.Count() > 1 && Convert.ToDecimal(test[1]) > 0)
PdsCount = Convert.ToDecimal(test[0]) + 1;
if (Request.QueryString["page"] != null)
cur = Convert.ToInt32(Request.QueryString["page"]);
else
cur = 1;
pds.CurrentPageIndex = cur - 1;
LitPage.Text += "<a class='Repeater'>صفحه " +Persia.Number.ConvertToPersian( Convert.ToString(pds.CurrentPageIndex + 1)) + " از " +Persia.Number.ConvertToPersian( Convert.ToString(PdsCount)) + "</a>";
if (pds.CurrentPageIndex + 1 > 1)
{
LitPage.Text += "<a class='Repeater' href='" + Request.CurrentExecutionFilePath + "?page=" + 1 + "&Count=" + ComboCount.SelectedIndex.ToString() + "&Group="+group+"'>ابتدا</a>";
LitPage.Text += "<a class='Repeater' href='" + Request.CurrentExecutionFilePath + "?page=" + Convert.ToString(pds.CurrentPageIndex) + "&Count=" + ComboCount.SelectedIndex.ToString() + "&Group=" + group + "'><</a>";
LitPage.Text += "<P class='PReap'>.......</p>";
}
for (int i = 1; i <= PdsCount; i++)
{
if (i >= pds.CurrentPageIndex)
{
if (count < 3)
{
count++;
if (pds.CurrentPageIndex + 1 == i)
LitPage.Text += "<a class='RepeaterSelected' href='" + Request.CurrentExecutionFilePath + "?page=" + i + "&Count=" + ComboCount.SelectedIndex.ToString() + "&Group=" + group + "'>" + Persia.Number.ConvertToPersian(i) + "</a>";
else
LitPage.Text += "<a class='Repeater' href='" + Request.CurrentExecutionFilePath + "?page=" + i + "&Count=" + ComboCount.SelectedIndex.ToString() + "&Group=" + group + "'>" + Persia.Number.ConvertToPersian(i) + "</a>";
}
}
}
if (pds.CurrentPageIndex + 1 != PdsCount)
{
LitPage.Text += "<P class='PReap'>.......</p>";
LitPage.Text += "<a class='Repeater' href='" + Request.CurrentExecutionFilePath + "?page=" + Convert.ToString(pds.CurrentPageIndex + 2) + "&Count=" + ComboCount.SelectedIndex.ToString() + "&Group=" + group + "'>></a>";
LitPage.Text += "<a class='Repeater' href='" + Request.CurrentExecutionFilePath + "?page=" + Convert.ToString(PdsCount) + "&Count=" + ComboCount.SelectedIndex.ToString() + "&Group=" + group + "'>انتها</a>";
}
dl.DataSource = pds;
dl.DataBind();