我有一个“商店”页面,其中列出了商店中的所有物品。我有一个分类功能,以决定有多少结果PR。我想看的页面。

我也有一个寻呼机。 Pager使用两个按钮(以前和下一页)和一个显示Pagenumber的文本框构建。 Pager在页面的顶部和底部。

当我在文本框中更改文本时,以下代码触发:

protected void tbPageNumberTop_TextChanged(object sender, EventArgs e)
    {
        tbPageNumberBottom.Text = tbPageNumberTop.Text;
        updpanMain.Update();
    }

这会导致pageload,在那里我从文本框中获取数字,然后将其解析为整数,我可以使用该数字来动态创建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字符串中的第一个限制整数,strresultsprpage代表第二个整数,即限制100,500显示了500至600的结果。(第5页,每页100个结果)

有帮助吗?

解决方案

您的page_load事件将在按钮的点击事件之前开火。看起来您正在根据从文本框(单击事件)有机会更新该值之前从文本框(tbpagenumbertop.text)中检索的值(tbpagenumbertop.text)中的page_load事件中使用SQL调用(IntstartPosition和strresultsprpage)中使用的参数。

您需要找到一种延迟该SQL调用的方法,直到单击事件有机会更新当前页面值。

您可能想查看页面生命周期以进行澄清:

http://msdn.microsoft.com/en-us/library/ms178472.aspx

其他提示

问题解决了。

我所做的是以下内容:

在page_load代码中,我写了以下内容:

protected void Page_Load(object sender, EventArgs e)
    {
        Page.LoadComplete += new EventHandler(Page_LoadComplete);
    }

然后,我将旧的page_load codeBlock粘贴到新的EventHandler中,在其上像魅力一样工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top