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 :-)
Annonceindlæg fra Infor
Hvor er: BindDataItems() ? Der ske et eller andet i den. mvh
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; } } } } }
DataPage.CurrentPageIndex = PageNumber; Det må være den du skal pille ved.
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; } } } } }
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
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.
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.....
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 :-).
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.