私はカスタムコントロールとして作成したページ番号の生成に以下のコード行を使用しています。私はそれにリピータコントロールを追加しました。 PopulatePager()メソッドを使用してページ番号をリピータに設定しています。 私は2つのボタンを追加しました.1つは次のページ番号セット用で、もう1つは前のページ番号セット用です。実際には49の合計ページ番号がありますが、すべてのページ番号を表示するのには適していません。今度は、< < 1 2 3 4 5 >>のように一度に5つの数字のセットのみを表示する必要があります。 >>ボタンをクリックすると、< < 6 7 8 9 10 >>というようになります。私は2つのイベントlnknext_Click()とlnkprev_Click()を作成しました。前のボタンの問題
次のボタンは完全に機能していますが、前のボタンが正しく機能していません。例えば用 我々は< < 22 23 24 25 26である場合には>>次に< <ボタンをクリックすると、それは再び>> < < 16 17 18 19 20 21が表示され、それをクリックする< < 1 2 3 4 5を表示> >の代わりに< < 10 11 12 13 14 15 >> ... 私を助けてください!
public void PopulatePager()
{
int recordCount = TotalPages;
if (PageSizeChanged != null)
{
HiddenField hd = new HiddenField();
int current;
current = PageIndex;
int pre;
int Next;
double dblPageCount = (double)((decimal)recordCount/decimal.Parse(ddlPageSize.SelectedValue));
int pageCount = TotalPages;
List<ListItem> pages = new List<ListItem>();
if (pageCount > 0)
{
//pages.Add(new ListItem("First", "1", PageIndex > 1));
current = PageIndex;
pre = --PageIndex;
PageIndex = current;
// pages.Add(new ListItem("Previous", pre.ToString(), PageIndex > 1));
for (int i = 1; i <= pageCount; i++)
{
if (i <= 5)
{
pages.Add(new ListItem(i.ToString(), i.ToString(), i != PageIndex));
}
}
int currentPage = PageIndex;
Next = ++PageIndex;
PageIndex = currentPage;
// pages.Add(new ListItem("Next", Next.ToString(), PageIndex < pageCount));
// pages.Add(new ListItem("Last", pageCount.ToString(), PageIndex < pageCount));
hd.Value = (pre.ToString());
}
if (Session["pages"] != null)
{
rptPager.DataSource = Session["pages"];
rptPager.DataBind();
}
else
{
rptPager.DataSource = pages;
rptPager.DataBind();
}
Session["lastnumber"] = 5;
Session["pagecount"] = pageCount;
Session["orignalpages"] = pages;
}
}
protected void lnkprev_Click(object sender, EventArgs e)
{
List<ListItem> pages = new List<ListItem>();
int pagecount = Convert.ToInt32(Session["pagecount"].ToString());
int lastnumber = Convert.ToInt32(Session["lastnumber"].ToString());
if (lastnumber > pagecount)
{
Session["lastnumber"] = pagecount - 5;
lastnumber = pagecount - 5;
Session["pagecount"] = pagecount;
Session["orignalpages"] = pages;
}
else
{
Session["lastnumber"] = 1;
lastnumber = 1;
Session["pagecount"] = pagecount;
Session["orignalpages"] = pages;
}
int limit = lastnumber + 5;
for (int i = lastnumber; i <= pagecount; i++)
{
if (i <= limit && i > 0)
{
pages.Add(new ListItem(i.ToString(), i.ToString(), i != PageIndex));
}
else
{
rptPager.DataSource = Session["orignalpages"];
rptPager.DataBind();
}
}
Session["lastnumber"] = limit;
Session["pagecount"] = pagecount;
Session["pages"] = pages;
rptPager.DataSource = pages;
rptPager.DataBind();
}
protected void lnknext_Click(object sender, EventArgs e)
{
List<ListItem> pages = new List<ListItem>();
int pagecount = Convert.ToInt32(Session["pagecount"].ToString());
int lastnumber = Convert.ToInt32(Session["lastnumber"].ToString());
if (lastnumber > pagecount)
{
Session["lastnumber"] = 1;
lastnumber = 1;
Session["pagecount"] = pagecount;
Session["orignalpages"] = pages;
}
int limit = lastnumber + 4;
for (int i = lastnumber; i <= pagecount; i++)
{
if (i <= limit)
{
pages.Add(new ListItem(i.ToString(), i.ToString(), i != PageIndex));
}
else
{
rptPager.DataSource = Session["orignalpages"];
rptPager.DataBind();
}
Session["lastnumber"] = limit;
Session["pagecount"] = pagecount;
Session["pages"] = pages;
rptPager.DataSource = pages;
rptPager.DataBind();
}
}
答えを – Nida