Repeater и пейджинг
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Repeater и пейджинг Expand / Collapse
Автор
Сообщение
18.12.2006 15:40
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 06.05.2008 14:00
Сообщ.: 69, Visits: 538
Здравствуйте.

Как сделать пейджинг при использовании контрола Repeater? Кто нибудь пробовал?

Заранее благодарю за помощь.

Сообщ. #909000
18.12.2006 15:55


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 29.10.2007 14:45
Сообщ.: 1 833, Visits: 16 863
Добавляй параметр Page в адресную строкУ, к примеру, или задавай его каким-либо другим образом.

Затем 2 вариант:

1) При помощи SQL выдергивать только нужные строки, исходя из номера страницы

2) пролистывать репитер до нужной строки (т.е. выполнять метод .Read() ((НомерСтраницы-1)*(Кол-во записей на странице)+1) раз).

Сообщ. #909001
18.12.2006 16:23
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 06.05.2008 14:00
Сообщ.: 69, Visits: 538
То есть такого варианта как с GridView не получится?
Сообщ. #909002
18.12.2006 16:33
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Не получится. GridView имеет встроенную поддержку paging. Repeater нет. Надо ее самостоятельно реализовывать. В конце концов это не так уж и сложно.
Сообщ. #909003
18.12.2006 16:33


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 29.10.2007 14:45
Сообщ.: 1 833, Visits: 16 863
Нет. Только вручную.
Сообщ. #909004
15.01.2007 10:48
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 06.05.2008 14:00
Сообщ.: 69, Visits: 538
У контрола Repeater нет метода Post().

Я сделал через переменные сессии (C#):

...

protected void Page_Load(object sender, EventArgs e)

{

String str_pCount = ""; int pCount = 0; int pSize = 10;

if (Session["pCount"] == null) Session.Add("pCount", 0);

str_pCount = Session["pCount"].ToString();

pCount = Convert.ToInt32(str_pCount);

AccessDataSource1.SelectCommand = "SELECT TOP " + pSize + " * FROM [table1] WHERE count > " + (pSize*pCount);

}

// пролистывание вперёд

protected void Button1_Click(object sender, EventArgs e)

{

String str = Session["pCount"].ToString();

int pCount = Convert.ToInt32(str);

Session["pCount"] = ++pc;

Response.Redirect("Default.aspx");

}

...

Тут проблема очевидна, - если поле COUNT таблицы TABLE1 будет не в  виде  "1,2,3,4, ... ", а в "2, 7, 50, 77 ...", то нельзя будет вычислить значение для условия WHERE. То есть нужно каким-то образом выяснить и запомнить (напр. в перем. сессии) значение идентифицирующего поля COUNT.

Что посоветуете?

Сообщ. #909670
15.01.2007 11:58
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Хранить номер текущей страницы в сессии не очень хорошая идея. Это негибко и означает что посетитель не сможет работать с двумя копиями одной страницы. На сайте 4guysfromrolla есть хороший пример реализации страничной выборки с помощью класса PagedDataSource. Через Google можно найти еще примеры на эту же тему.

P.S. Нет никакого смысла писать такой код:

String str = Session["pCount"].ToString();
int pCount = Convert.ToInt32(str);

Когда можно сразу получить число:

int pCount = Convert.ToInt32(Session["pCount"]);

Сообщ. #909672
15.01.2007 12:33
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 06.05.2008 14:00
Сообщ.: 69, Visits: 538
bazile (15.01.2007)

P.S. Нет никакого смысла писать такой код:

String str = Session["pCount"].ToString();
int pCount = Convert.ToInt32(str);

Когда можно сразу получить число:

int pCount = Convert.ToInt32(Session["pCount"]);

да это понятно :) не до оптимизации было

Спасибо за помощь, о результатах напишу.

Сообщ. #909674
15.01.2007 13:23