|
Создаем paging своими руками (ASP.NET)
Сегодня мы рассмотрим метод создания пейджинга руками. То есть просмотр какого-либо списка
с постраничным просмотром.
Многие из Вас спросят:"А зачем вообще делать пейджинг руками когда в ASP.NET практически все контролы имеют автоматически создаваемый пейджинг?"
На это есть две причины, которые могут показаться некоторым не актуальными.
Первая причина вот в чем:
ASP.NET генерирует пейджинг (постраничный просмотр) используя javascript ссылки, поэтому пользователь
у которого js в броузере отключен не сможет перейти на другие страницы списка.
Второй следует из первого : так как роботы поисковых систем это примитивные броузеры и они не умеют ходить
по javascript ссылка то все страницы после первой окажутся не проиндексированными, поэтому что бы избавиться
от различных проблем с SEO оптимизацией я предлагаю делать пейджинг руками (живыми ссылками a href)
И так приступим
Текущую страницу будем передавать через GET параметр строки запроса
Добавим на страницу контрол literal в него мы будем генерировать наш HTML код.
<asp:Literal ID="lOutput" runat="server"></asp:Literal>
|
Определяем переменную которая будет содержать актуальную страницу списка
Далее в методе загрузки страницы пытаемся получить текущий номер страницы если он был передан в строке запроса
int page = 1;
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Params["page"] != null)
{
try
{
page = Convert.ToInt32(Request.Params["page"]);
}
catch { }
}
FillControl();
}
|
В методе FillControl() будем генерировать HTML код
Выставляем размер страницы и вычисляем первый и последний отображаемый элемент списка
private void FillControl()
{
int page_size = 20;
int fist = (page - 1) * page_size;
int last = fist + page_size;
|
Формируем полный список контента - унас это будут просто цифры
string output = "";
ArrayList arNew = new ArrayList();
for (int i = 0; i < 100; i++)
arNew.Add(i);
|
Формируем таблицу и выводим все строки (контент) для диапазона от первой отборажаемой страницы до последней отображаемой
output += "<table border=1>\n";
output += "<tr ><th >Заголовок</th></tr>";
for (int i = fist; i < last; i++)
{
if (i >= arNew.Count)
break;
string line = arNew[i].ToString();
output += "<tr><td >\n" +
"<a href=\"http://" + line + "\">" + line + "</a></td>" +
"</tr>";
}
|
Вычисляем количество страниц
int page_count = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(Convert.ToDouble(arNew.Count) / Convert.ToDouble(page_size))));
|
Ну и на последок
Формируем футер в нем будут ссылки для перехода на различные страницы
в параметре page передаем страницу
далее весь результат выводится в Literal
string strPage = "";
for (int i = 1; i <= page_count; i++)
{
if (page == i)
{
strPage += " <font style='font-size:14px' color=gray>" + i + "</font> ";
}
else
{
strPage += " <a href='" + Request.FilePath + "?page=" + i + "'>" + i + "</a> ";
}
}
if (page_count > 1)
output += "<tr><td ><BR>" + strPage + "</td><tr>";
output += "</table>\n";
lOutput.Text = output;
|
а вот и результат
Предыдущая стр.   
Оглавление   
Следующая стр.
Средняя оценка:     (5 - 1 голосов) Для оценки необходимо зарегистрироваться
Только зарегистрировавшиеся пользователи могут оставлять комментарии
|
|