ショップ内のすべてのアイテムがリストされている「ショップ」ページがあります。私は、いくつの結果をprに決定するためのソート機能を持っています。見たいページ。
私もページャーを持っています。ページャーは、2 つのボタン (前ページ ボタンと次ページ ボタン) と、ページ番号を表示するテキスト ボックスで構成されています。ページャーは、ページの上部と下部の両方にあります。
テキスト ボックス内のテキストを変更すると、次のコードが実行されます。
protected void tbPageNumberTop_TextChanged(object sender, EventArgs e)
{
tbPageNumberBottom.Text = tbPageNumberTop.Text;
updpanMain.Update();
}
これによりページロードが発生し、テキストボックスから数値を取得して整数に解析し、SQL リクエストを動的に作成するために使用できます。これは完璧に機能します。
これが私の問題です。「次へ」ボタンまたは「前へ」ボタンをクリックすると、テキストボックス内のテキストが変更されますが、テキストボックスから番号を取得すると、ボタンがクリックされる前のテキストボックスの値が取得されます。正しいページ番号を取得するにはどうすればよいですか?
ここに私のクリックコードがあります:
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 は SQL 文字列の最初の LIMIT 整数を表し、strResultsPrPage は 2 番目の整数を表します。つまり、LIMIT 100, 500 は 500 から 600 までの結果を示しています。 (ページ 5、ページあたり 100 の結果)