简体   繁体   English

ASP.NET 2.0回发在第一次回发后停止工作

[英]ASP.NET 2.0 postback stops working after first postback

I have a DataList control that is using a PagedDataSource, the page loads fine, data is displayed ok. 我有一个使用PagedDataSource的DataList控件,页面加载正常,数据显示正常。 I also have another DataList which provides page numbers for the paging. 我也有另一个DataList,它提供了分页的页码。

When the user clicks on any of the page numbers if does a postback and increments the PagedDataSource CurrentPage property. 当用户单击任何页码时,是否进行回发并增加PagedDataSource CurrentPage属性。

This works fine the first time you click it. 第一次单击时效果很好。 The page reloads on the proper page. 页面将重新加载到正确的页面上。 Clicking any page again however, does NOT cause a postback to occur. 但是,再次单击任何页面都不会导致回发。 THe page seems to "flicker" But I get no server side codestop getting hit, unlike the first time I clicked it. 该页面似乎“闪烁”,但是与第一次单击不同,我没有服务器端代码停止被点击。

I'd assume the first postback is screwing up the postback somehow, but I don't know why. 我认为第一次回发会以某种方式破坏回发,但我不知道为什么。

Any ideas on this ? 有什么想法吗? Here is the Page load and binding code.. 这是页面加载和绑定代码。

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Trace.Write("Before BindItemsList() " + DateTime.Now.ToLongTimeString());
            this.BindItemsList();
            Trace.Write("After BindItemsList() " + DateTime.Now.ToLongTimeString());
        }
    }

private void BindItemsList()
{
        DataTable dataTable = new DataTable();
        if (Cache["dtItems"] != null)
            dataTable = (DataTable)Cache["dtItems"];
        else
            dataTable = this.GetDataTable();

        _PageDataSource.DataSource = dataTable.DefaultView;
        _PageDataSource.AllowPaging = true;
        _PageDataSource.PageSize = 9;
        _PageDataSource.CurrentPageIndex = CurrentPage;
        ViewState["TotalPages"] = _PageDataSource.PageCount;

        this.lblPageInfo.Text = "Page  " + (CurrentPage + 1) + "   of   " + _PageDataSource.PageCount;
        this.ibtnPrevious.Enabled = !_PageDataSource.IsFirstPage;
        this.ibtnNext.Enabled = !_PageDataSource.IsLastPage;
        this.ibtnFirst.Enabled = !_PageDataSource.IsFirstPage;
        this.ibtnLast.Enabled = !_PageDataSource.IsLastPage;

        this.dlProducts.DataSource = _PageDataSource;
        this.dlProducts.DataBind();
        this.doPaging();
}

protected void ibtnFirst_Click(object sender, ImageClickEventArgs e)
{
    CurrentPage = 0;
    this.BindItemsList();
}
protected void ibtnPrevious_Click(object sender, ImageClickEventArgs e)
{
    CurrentPage -= 1;
    this.BindItemsList();
}
protected void ibtnNext_Click(object sender, ImageClickEventArgs e)
{
    CurrentPage += 1;
    this.BindItemsList();
}
protected void ibtnLast_Click(object sender, ImageClickEventArgs e)
{
    CurrentPage = (Convert.ToInt32(ViewState["TotalPages"]) - 1);
    this.BindItemsList();
}
protected void dlPaging_ItemCommand(object source, DataListCommandEventArgs e)
{
    if (e.CommandName.Equals("Paging"))
    {
        CurrentPage = Convert.ToInt16(e.CommandArgument.ToString());
        this.BindItemsList();
    }
}

/// <summary>
/// Binding Paging List
/// </summary>
private void doPaging()
{
    DataTable dt = new DataTable();
    dt.Columns.Add("PageIndex");
    dt.Columns.Add("PageText");

    fistIndex = CurrentPage - 5;


    if (CurrentPage > 5)
    {
        lastIndex = CurrentPage + 4;
    }
    else
    {
        lastIndex = 9;
    }
    if (lastIndex > Convert.ToInt32(ViewState["TotalPages"]))
    {
        lastIndex = Convert.ToInt32(ViewState["TotalPages"]);
        fistIndex = lastIndex - 9;
    }

    if (fistIndex < 0)
    {
        fistIndex = 0;
    }

    for (int i = fistIndex; i < lastIndex; i++)
    {
        DataRow dr = dt.NewRow();
        dr[0] = i;
        dr[1] = i + 1;
        dt.Rows.Add(dr);
    }

    this.dlPaging.DataSource = dt;
    this.dlPaging.DataBind();
    this.dlBottomPaging.DataSource = dt;
    this.dlBottomPaging.DataBind();
}

如果在页面加载时检查ISpostback,请使列表绑定脱离ISpostback范围。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM