Frage

Ich habe einen ‚Shop‘, wo alle Einzelteile im Shop aufgeführt sind. Ich habe eine sortingfunction, zu entscheiden, wie viele Ergebnisse pr. Seite Ich möchte sehen.

Ich habe auch einen Pager. Der Pager ist mit zwei Knöpfen (a Vorige- und Next-pagebutton) gebaut, und ein Textfeld der Seitennummer, die zeigt. Der Pager ist sowohl auf der oberen und unteren Rand der Seite.

Wenn ich den Text in der Textbox ändern, werden die folgenden Code Brände:

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

Dies führt zu einem Pageload, wo ich die Nummer aus der Textbox zu bekommen, und analysieren sie auf eine ganze Zahl, die ich dynamisch eine SQL erstellen Anfrage nutzen können. Dies funktioniert nur perfekt.

Hier ist mein Problem. Wenn ich auf die Schaltfläche „Weiter“ oder „Zurück“ -Taste, um den Text in den Textänderungen, aber wenn ich die Nummer aus der Textbox, ich den Wert der Textbox erhalten, wie es vorher auf der Schaltfläche geklickt wurde, war. Wie erhalte ich die richtige Seitennummer?

Hier ist mein Click-Code:

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();
    }

Und hier ist, was auf page_load geschieht

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 stellt die erste LIMIT ganze Zahl in meiner SQL-Zeichenfolge, und strResultsPrPage stellt die zweite ganze Zahl, das heißt LIMIT 100, 500 Ergebnisse von 500 bis 600 (Seite 5, mit 100 Ergebnissen pro Seite) zeigen

War es hilfreich?

Lösung

Ihr Page_Load Ereignis zu Feuer wird vor Click-Ereignisse Ihrer Schaltfläche. Es sieht aus wie Sie die Parameter in der SQL-Aufruf gewohnt sind Einstellung (intStartPosition und strResultsPrPage) in dem Ereignis Page Load auf dem Wert aus der Textbox (tbPageNumberTop.Text) vor dem Click-Ereignis eine Chance, diesen Wert zu aktualisieren abgerufen Basis hatte.

Sie müssen einen Weg finden, dass die SQL-Aufruf zu verzögern, bis nach dem Click-Ereignisse hatten eine Chance, die aktuelle Seite Wert zu aktualisieren.

Sie können einen Blick auf die Seite Lebenszyklus zur Klärung haben wollen:

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

Andere Tipps

gelöst Problem.

Was ich tat, war die folgende:

Im page_load Code, schrieb ich folgendes:

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

Und dann klebte ich den alten page_load Codeblock in dem neuen Eventhandler, es funktioniert wie ein Charme.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top