|
|
|
Forum Guru
      
участник
Last Login: 06.05.2008 14:00
Сообщ.: 69,
Visits: 538
|
|
| Здравствуйте. Как сделать пейджинг при использовании контрола Repeater? Кто нибудь пробовал? Заранее благодарю за помощь.
|
|
|
|
|
Supreme Being
      
модератор
Last Login: 29.10.2007 14:45
Сообщ.: 1 833,
Visits: 16 863
|
|
| Добавляй параметр Page в адресную строкУ, к примеру, или задавай его каким-либо другим образом. Затем 2 вариант: 1) При помощи SQL выдергивать только нужные строки, исходя из номера страницы 2) пролистывать репитер до нужной строки (т.е. выполнять метод .Read() ((НомерСтраницы-1)*(Кол-во записей на странице)+1) раз).
|
|
|
|
|
Forum Guru
      
участник
Last Login: 06.05.2008 14:00
Сообщ.: 69,
Visits: 538
|
|
| То есть такого варианта как с GridView не получится?
|
|
|
|
|
Supreme Being
модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240,
Visits: 65 445
|
|
| Не получится. GridView имеет встроенную поддержку paging. Repeater нет. Надо ее самостоятельно реализовывать. В конце концов это не так уж и сложно.
|
|
|
|
|
Supreme Being
      
модератор
Last Login: 29.10.2007 14:45
Сообщ.: 1 833,
Visits: 16 863
|
|
|
|
|
|
Forum 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. Что посоветуете?
|
|
|
|
|
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"]);
|
|
|
|
|
Forum 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"]); да это понятно :) не до оптимизации было Спасибо за помощь, о результатах напишу.
|
|
|
|
| | |