Avatar billede simsen Mester
13. juli 2010 - 21:18 Der er 7 kommentarer og
1 løsning

paging last page og ikke first page

Hej,

Jeg har fundet en metode på nettet til at lave paging links i, som virker perfekt....... Mit eneste problem er, jeg gerne vil have det er valgfrit om den går til første eller sidste side, når man loader den....

Jeg ved, jeg skal bruge:

int currentPage = DataPage.PageCount - 1; //Add
DataPage.CurrentPageIndex = currentPage; //Add

Men jeg aner ikke hvor i koden - forsøger jeg at sætte de to linjer ind - går den korrekt nok til sidste side......men jeg kan ikke tilgå de andre sider, når jeg klikker på dem......Den forbliver på sidste side...og det er jo ikke særlig smart :-( Nogen der ved, hvor jeg skal sætte dem ind, så den tilgår sidste side (jeg laver senere det sådan, at det bliver et valg i CreatePagingLinks(bool displayRows) til CreatePagingLinks(bool displayRows, bool lastPage)

Koden hvor jeg forsøger at sætte linjerne ind er her:

protected void CreatePagingLinks(bool displayRows)
    {
        try
        {
            if (!(_DataPage.PageCount == 0))
            {
                PageCount = _DataPage.PageCount;
                int LowerLimit;
                int UpperLimit;
                StringBuilder PagerDisplay = new StringBuilder();
                int PageStartRange;
                int PageEndRange;

                PageStartRange = ((this._DataPage.CurrentPageIndex * this._PageSize)
                            + 1);
                PageEndRange = Math.Min((PageStartRange
                                + (this._PageSize - 1)), this._RecordCount);
                PagerDisplay.Append(("<b>"
                                + (Resources.Resource.DisplayingPage + "</b> ")));
                PagerDisplay.Append((this._DataPage.CurrentPageIndex + 1));
                PagerDisplay.Append((" <b>"
                                + (Resources.Resource.DisplayingOf + "</b> ")));
                PagerDisplay.Append((this._DataPage.PageCount + ",  "));
                if (displayRows)
                {
                    PagerDisplay.Append((" <b>"
                                    + (Resources.Resource.DisplayingRows + "</b> ")));
                    PagerDisplay.Append(PageStartRange);
                    PagerDisplay.Append(" - ");
                    PagerDisplay.Append(PageEndRange);
                    PagerDisplay.Append((" <b>"
                                    + (Resources.Resource.DisplayingOf + "</b> ")));
                    PagerDisplay.Append(this._RecordCount);
                }
                this._PagerInfoLabel.Text = PagerDisplay.ToString();
                if ((PageCount >= 1))
                {
                    this._PagingTopPanel.Visible = true;
                    this._PagingBottomPanel.Visible = true;
                    ArrayList pages = new ArrayList();
                    if (((PageNumber > 0)
                                && (PageCount > _PagesToDisplay)))
                    {
                        LowerLimit = (PageNumber - _PagesToDisplay);
                        if ((LowerLimit < 1))
                        {
                            LowerLimit = 0;
                        }
                        if ((LowerLimit
                                    > (PageCount - _PagesToDisplay)))
                        {
                            LowerLimit = (PageCount - _PagesToDisplay);
                        }
                    }
                    LowerLimit = PageNumber;
                    if ((LowerLimit
                                > (PageCount - _PagesToDisplay)))
                    {
                        LowerLimit = (PageCount
                                    - (_PagesToDisplay - 1));
                    }
                    if ((LowerLimit < 1))
                    {
                        LowerLimit = 1;
                    }
                    if (((PageNumber + _PagesToDisplay)
                                > PageCount))
                    {
                        UpperLimit = PageCount;
                    }
                    else
                    {
                        UpperLimit = (PageNumber + _PagesToDisplay);
                    }
                    int i = LowerLimit;
                    while ((i <= UpperLimit))
                    {
                        pages.Add(i.ToString());
                        i++;
                    }

                    this._RepeaterTop.DataSource = pages;
                    this._RepeaterTop.DataBind();
                    this._RepeaterBottom.DataSource = pages;
                    this._RepeaterBottom.DataBind();
                }
                else
                {
                    this._PagingTopPanel.Visible = false;
                    this._PagingBottomPanel.Visible = false;
                }
                this._PreviousTopLinkButton.Enabled = !_DataPage.IsFirstPage;
                this._NextTopLinkButton.Enabled = !_DataPage.IsLastPage;
                this._PreviousBottomLinkButton.Enabled = !_DataPage.IsFirstPage;
                this._NextBottomLinkButton.Enabled = !_DataPage.IsLastPage;
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    protected void GoToPrevious(object sender, EventArgs e)
    {
        if (((ViewState["PageNumber"] == null)
                    || (Convert.ToInt32(ViewState["PageNumber"]) == 0)))
        {
            PageNumber = 0;
        }
        else
        {
            PageNumber = (Convert.ToInt32(ViewState["PageNumber"]) - 1);
        }
        BindDataItems();
    }
    protected void GoToNext(object sender, EventArgs e)
    {
        if (((Convert.ToInt32(ViewState["PageNumber"]) + 1)
                    == PageCount))
        {
            PageNumber = (PageCount - 1);
        }
        else
        {
            PageNumber = (Convert.ToInt32(ViewState["PageNumber"]) + 1);
        }
        BindDataItems();
    }
    protected void PagingRepeater_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        PageNumber = (Convert.ToInt32(e.CommandArgument) - 1);
        BindDataItems();
    }
    protected string BoldPageNumber(string Item)
    {
        if (((Convert.ToInt32(Item) - 1) == PageNumber))
        {
            return ("<b>" + (Item + "</b>"));
        }
        else
        {
            return Item;
        }
    }

mvh
simsen :-)
Avatar billede Syska Mester
13. juli 2010 - 23:54 #1
Hvor er:
BindDataItems() ? Der ske et eller andet i den.

mvh
Avatar billede simsen Mester
14. juli 2010 - 00:32 #2
Den får du da lige her:

public override void BindDataItems()
    {
        HideMessages();

        if (!HideData)
        {
            if (ItemId != 0)
            {
                //Blog
                if (PageTypes == PageType.Blog)
                {
                    DataTable DT = new DataTable();

                    CommentList commentslist = new CommentList();
                    commentslist.itemId = ItemId;

                    DT = commentslist.GetCommentsBlog();

                    RecordCount = DT.Rows.Count;

                    DataPage.DataSource = DT.DefaultView;
                    DataPage.AllowPaging = true;
                    DataPage.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
                    DataPage.CurrentPageIndex = PageNumber;

                    CreatePagingLinks(true);

                    if (DT.Rows.Count > 0)
                    {
                        repComments.DataSource = DataPage;
                        repComments.DataBind();
                    }
                    else
                    {
                        repComments.DataSource = null;
                        repComments.DataBind();
                        lblMessageNoRows.Text = Resources.Resource.NoComments.ToString();
                        lblMessageNoRows.Visible = true;
                    }
                }
            }
        }
    }
Avatar billede Syska Mester
14. juli 2010 - 00:57 #3
DataPage.CurrentPageIndex = PageNumber;

Det må være den du skal pille ved.
Avatar billede simsen Mester
14. juli 2010 - 01:07 #4
buzzzz

Du skulle bare stille spørgsmålet - har løst det - alene udfra dit spørgsmål *GG*

Har dog valgt at pille ved den inde i selve CreatePagingLinks hvor jeg så i BindDataItem fortæller om den skal være sidste side....

Smid i et svar og du får dine points - og igen tak for hjælpen

Og så til andre (inkl. mig selv, når jeg næste gang ikke kan huske hvordan):

protected void CreatePagingLinks(bool displayRows, bool viewLastPage)
    {
        try
        {
            if (!(_DataPage.PageCount == 0))
            {
                PageCount = _DataPage.PageCount;
                int LowerLimit;
                int UpperLimit;
                StringBuilder PagerDisplay = new StringBuilder();
                int PageStartRange;
                int PageEndRange;

                PageStartRange = ((this._DataPage.CurrentPageIndex * this._PageSize)
                            + 1);
                PageEndRange = Math.Min((PageStartRange
                                + (this._PageSize - 1)), this._RecordCount);
                PagerDisplay.Append(("<b>"
                                + (Resources.Resource.DisplayingPage + "</b> ")));
                PagerDisplay.Append((this._DataPage.CurrentPageIndex + 1));
                PagerDisplay.Append((" <b>"
                                + (Resources.Resource.DisplayingOf + "</b> ")));
                PagerDisplay.Append((this._DataPage.PageCount + ",  "));
                if (displayRows)
                {
                    PagerDisplay.Append((" <b>"
                                    + (Resources.Resource.DisplayingRows + "</b> ")));
                    PagerDisplay.Append(PageStartRange);
                    PagerDisplay.Append(" - ");
                    PagerDisplay.Append(PageEndRange);
                    PagerDisplay.Append((" <b>"
                                    + (Resources.Resource.DisplayingOf + "</b> ")));
                    PagerDisplay.Append(this._RecordCount);
                }
                this._PagerInfoLabel.Text = PagerDisplay.ToString();
                if ((PageCount >= 1))
                {
                    this._PagingTopPanel.Visible = true;
                    this._PagingBottomPanel.Visible = true;
                    ArrayList pages = new ArrayList();
                    if (((PageNumber > 0)
                                && (PageCount > _PagesToDisplay)))
                    {
                        LowerLimit = (PageNumber - _PagesToDisplay);
                        if ((LowerLimit < 1))
                        {
                            LowerLimit = 0;
                        }
                        if ((LowerLimit
                                    > (PageCount - _PagesToDisplay)))
                        {
                            LowerLimit = (PageCount - _PagesToDisplay);
                        }
                    }
                    LowerLimit = PageNumber;
                    if ((LowerLimit
                                > (PageCount - _PagesToDisplay)))
                    {
                        LowerLimit = (PageCount
                                    - (_PagesToDisplay - 1));
                    }
                    if ((LowerLimit < 1))
                    {
                        LowerLimit = 1;
                    }
                    if (((PageNumber + _PagesToDisplay)
                                > PageCount))
                    {
                        UpperLimit = PageCount;
                    }
                    else
                    {
                        UpperLimit = (PageNumber + _PagesToDisplay);
                    }
                    int i = LowerLimit;
                    while ((i <= UpperLimit))
                    {
                        pages.Add(i.ToString());
                        i++;
                    }

                    this._RepeaterTop.DataSource = pages;
                    this._RepeaterTop.DataBind();
                    this._RepeaterBottom.DataSource = pages;
                    this._RepeaterBottom.DataBind();

                    if (viewLastPage == true)
                    {
                        if (_DataPage.PageCount > 0)
                        {
                            _DataPage.CurrentPageIndex = _DataPage.PageCount - 1;
                        }
                    }
                }
                else
                {
                    this._PagingTopPanel.Visible = false;
                    this._PagingBottomPanel.Visible = false;
                }
                this._PreviousTopLinkButton.Enabled = !_DataPage.IsFirstPage;
                this._NextTopLinkButton.Enabled = !_DataPage.IsLastPage;
                this._PreviousBottomLinkButton.Enabled = !_DataPage.IsFirstPage;
                this._NextBottomLinkButton.Enabled = !_DataPage.IsLastPage;
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    protected void GoToPrevious(object sender, EventArgs e)
    {
        if (((ViewState["PageNumber"] == null)
                    || (Convert.ToInt32(ViewState["PageNumber"]) == 0)))
        {
            PageNumber = 0;
        }
        else
        {
            PageNumber = (Convert.ToInt32(ViewState["PageNumber"]) - 1);
        }
        BindDataItems(false);
    }
    protected void GoToNext(object sender, EventArgs e)
    {
        if (((Convert.ToInt32(ViewState["PageNumber"]) + 1)
                    == PageCount))
        {
            PageNumber = (PageCount - 1);
        }
        else
        {
            PageNumber = (Convert.ToInt32(ViewState["PageNumber"]) + 1);
        }
        BindDataItems(false);
    }
    protected void PagingRepeater_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        PageNumber = (Convert.ToInt32(e.CommandArgument) - 1);
        BindDataItems(false);
    }
    protected string BoldPageNumber(string Item)
    {
        if (((Convert.ToInt32(Item) - 1) == PageNumber))
        {
            return ("<b>" + (Item + "</b>"));
        }
        else
        {
            return Item;
        }
    }

public override void BindDataItems(bool viewLastPage)
    {
        HideMessages();

        if (!HideData)
        {
            if (ItemId != 0)
            {
                //Blog
                if (PageTypes == PageType.Blog)
                {
                    DataTable DT = new DataTable();

                    CommentList commentslist = new CommentList();
                    commentslist.itemId = ItemId;

                    DT = commentslist.GetCommentsBlog();

                    RecordCount = DT.Rows.Count;

                    DataPage.DataSource = DT.DefaultView;
                    DataPage.AllowPaging = true;
                    DataPage.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
                   
                    DataPage.CurrentPageIndex = PageNumber;

                    CreatePagingLinks(true, viewLastPage);

                    if (DT.Rows.Count > 0)
                    {
                        repComments.DataSource = DataPage;
                        repComments.DataBind();
                    }
                    else
                    {
                        repComments.DataSource = null;
                        repComments.DataBind();
                        lblMessageNoRows.Text = Resources.Resource.NoComments.ToString();
                        lblMessageNoRows.Visible = true;
                    }
                }
            }
        }
    }
Avatar billede Syska Mester
14. juli 2010 - 01:30 #5
Yes, jeg havde nemmere ved at overskue det med den lidt mindre kode, og ja, tror PageNumber er en public property på din page, så den kan tilgås fra alle methods på den side.

mvh og svar
Avatar billede Syska Mester
14. juli 2010 - 01:31 #6
Som en kommentar, så er det tit det sidste lille spring man mangler for at komme i mål.

Og bare tag halvdelen af de point selv, da vi var fælles om løsningen.
Avatar billede simsen Mester
14. juli 2010 - 01:47 #7
buzzzz

Nix - du får alle pointsene - for mig drejer det sig ikke om points - men om hjælp, når jeg er kørt fast......og det var jeg her - kiggede slet ikke ud over min egen lille næsetip (= CreatePagingLinks metoden) - men det gjorde jeg så til gengæld rigeligt - sådan ca. et par timer *GG* Så rart for mig, når nogen gider give mig det tip, der gør, jeg kan komme videre *SS*

Og ja PageNumber er en public property.....
Avatar billede Syska Mester
14. juli 2010 - 02:04 #8
Ja, det bliver nok heller ikke sidste spørgmål jeg så kommer til at hjælpe dig med ... giver lidt variation når man selv sidder og koder, og har brug for en pause :-).
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Udviklings- og Forenklingsstyrelsen

Testmanager til Partsrepræsentation

De Nationale Geologiske Undersøgelser for Danmark og Grønland (GEUS)

IT-systemadministrator søges til GEUS