1

Webページでページングが必要です。私はそれにPagedDataSourceを使用します。しかし、.aspxに列挙するページが必要なので、LinkButtons動的に追加して、すべてのページにPlaceHolder1つ書き込みEventhandlerます。表示され、正常に動作します。最初のクリックEventhandlerで起動されます。2番目にそれは発砲しません。3番目にあります。など...何かアイデアはありますか?

    protected void Page_Load(object sender, EventArgs e)
    {
        bindrepeater();
    }


    private void bindrepeater()
    {
        var service = new Service();
        var coll = service.GetPeople();

        PagedDataSource Pds1 = new PagedDataSource();
        Pds1.DataSource = coll;
        Pds1.AllowPaging = true;
        Pds1.PageSize = 10;
        Pds1.CurrentPageIndex = CurrentPage;

        Repeater1.DataSource = Pds1;
        Repeater1.DataBind();

        var count = (coll.Count / 10) + 1;
        pages.Controls.Clear();
        for (int i = 1; i < count; i++)
        {
            var lb = new LinkButton() { Text = i.ToString(), CssClass = "hrefia" };
            lb.Click += new EventHandler(lb_Click);
            pages.Controls.Add(lb);
        }
    }

    protected void lb_Click(object sender, EventArgs e)
    {
        var lb = (LinkButton)sender;
        CurrentPage = int.Parse(lb.Text);
        bindrepeater();
    }

    public int CurrentPage
    {
        get
        {
            object s1 = this.ViewState["CurrentPage"];
            if (s1 == null)
            {
                return 0;
            }
            else
            {
                return Convert.ToInt32(s1);
            }
        }
        set { this.ViewState["CurrentPage"] = value; }
    }
4

2 に答える 2

1

すべてのリンクボタンに ID を付与する必要がありました。 @Hassan Boutougha がコメントで私をアンサーしました...

var lb = new LinkButton() { Text = i.ToString(), CssClass = "hrefia" };
lb = "btnId" + i.ToString();
于 2012-07-30T13:47:35.550 に答える
0

コードに従って最初にロードすると、現在のページインデックスは0として返されます。その後、ページ2をクリックした場合のように、後続のページクリックでは、返される現在のページインデックスは2になりますが、ページインデックスが0、2は、2ページ目ではなく3ページ目を意味します。したがって、現在のページを設定するときは、次のようにする必要があります。

protected void lb_Click(object sender, EventArgs e)
{   
    var lb = (LinkButton)sender;      
    CurrentPage = int.Parse(lb.Text) **- 1**;
    bindrepeater();   
}
于 2012-07-30T11:35:21.300 に答える