У меня есть страница «Магазин», где перечислены все товары в магазине.У меня есть функция сортировки, чтобы решить, сколько результатов пр.страницу, которую я хочу увидеть.
У меня также есть пейджер.Пейджер состоит из двух кнопок (кнопка «Предыдущая» и «Следующая страница») и текстового поля, в котором отображается номер страницы.Пейджер находится как вверху, так и внизу страницы.
Когда я изменяю текст в текстовом поле, запускается следующий код:
protected void tbPageNumberTop_TextChanged(object sender, EventArgs e)
{
tbPageNumberBottom.Text = tbPageNumberTop.Text;
updpanMain.Update();
}
Это вызывает загрузку страницы, где яполучить число из текстового поля и разобрать его в целое число, которое я могу использовать для динамического создания запроса SQL.Это работает просто отлично.
Вот моя проблема.Когда я нажимаю кнопку «Далее» или «Предыдущий», текст в текстовом поле изменяется, но когда я получаю число из текстового поля, я получаю значение текстового поля таким, каким оно было ДО нажатия кнопки.Как получить правильный номер страницы?
Вот мой Click-код:
protected void btnNextPage_Click(object sender, EventArgs e)
{
int PageNumber = Convert.ToInt32(tbPageNumberTop.Text);
PageNumber += 1;
tbPageNumberTop.Text = PageNumber.ToString();
tbPageNumberBottom.Text = PageNumber.ToString();
updpanMain.Update();
}
protected void btnPrevPage_Click(object sender, EventArgs e)
{
int PageNumber = Convert.ToInt32(tbPageNumberTop.Text);
PageNumber -= 1;
tbPageNumberTop.Text = PageNumber.ToString();
tbPageNumberBottom.Text = PageNumber.ToString();
updpanMain.Update();
}
А вот что происходит на page_load
if (!this.IsPostBack)
{
intStartPosition = 0;
intPageNumber = 1;
tbPageNumberBottom.Text = intPageNumber.ToString();
tbPageNumberTop.Text = intPageNumber.ToString();
}
if (tbPageNumberTop.Text != "1" || tbPageNumberBottom.Text != "1")
{
intPageNumber = Convert.ToInt32(tbPageNumberTop.Text);
}
else
{
intPageNumber = 1;
}
intStartPosition = (intPageNumber * intItemsPrPage) - intItemsPrPage;
strResultsPrPage = intItemsPrPage.ToString();
intStartPosition представляет первое целое число LIMITв моей строке SQL, а strResultsPrPage представляет второе целое число, то есть LIMIT 100, 500 показывает результаты от 500 до 600. (Страница 5, 100 результатов на странице)