0
我爲GridView和Repeater使用自定義分頁。以下是我迄今爲止所做的代碼:自定義GridView分頁的自動序列號
Default.aspx:
<asp:Repeater ID="rptPager" runat="server">
<ItemTemplate>
<asp:LinkButton ID="lnkPage" runat="server" Text='<%#Eval("Text") %>' CommandArgument='<%# Eval("Value") %>'
CssClass='<%# Convert.ToBoolean(Eval("Enabled")) ? "page_enabled" : "page_disabled" %>'
OnClick="lnkPage_Click" PostBackUrl='<%# "~/UI/SearchCity.aspx?page=" + Eval("Text") %>' OnClientClick='<%# !Convert.ToBoolean(Eval("Enabled")) ? "return false;" : "" %>'></asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
Default.aspx.cs:
private void BindGridView(int pageIndex) //Bind data
{
List<Country> countryListView = null; //List type variable
countryListView = aManager.AllCountryList(); //Assigns the data in the list calling the method
totalRecordCount = countryListView.Count; //Counts total no. of record
pageSize = 4; //Page size
int startRow = pageIndex * pageSize; //Variable to assign the starting row
detailsGridView.DataSource = countryListView.Skip(startRow).Take(pageSize); //Shows data in GridView
detailsGridView.DataBind();
}
private void BindPager(int currentPageIndex) //Pagination
{
double getPageCount = (double)((decimal)totalRecordCount/(decimal)pageSize);
int pageCount = (int)Math.Ceiling(getPageCount); //Count page
List<ListItem> pages = new List<ListItem>(); //New list item
/****Pagination starts ****/
if (pageCount > 1)
{
pages.Add(new ListItem("<<", "1", currentPageIndex > 0));
for (int i = 1; i <= pageCount; i++)
{
pages.Add(new ListItem(i.ToString(), i.ToString(), i != currentPageIndex + 1));
}
pages.Add(new ListItem(">>", pageCount.ToString(), currentPageIndex < pageCount - 1));
}
/****Pagination ends ****/
rptPager.DataSource = pages;
rptPager.DataBind();
}
上述工作完美。但問題是,當我使用以下方法來生成自動編號,它不能正常工作:
<%#(Container.DataItemIndex+1)%>
我的意思是,當我瀏覽到第2頁,行數,從1開始,同爲其他頁面。有什麼辦法可以解決這個問題嗎?
我曾嘗試這個生成自動編號:。然後最後這個,int serialNo = 1;保護無效detailsGridView_RowDataBound(對象發件人,GridViewRowEventArgs E){如果(e.Row.RowType == DataControlRowType.DataRow){如果(!String.IsNullOrEmpty(((標籤)e.Row.FindControl( 「labelSerialNo」))。文) ){Label labelSerialNo =(Label)e.Row.FindControl(「labelSerialNo」); labelSerialNo.Text = serialNo.ToString(); serialNo = serialNo + 1; }}}。但它沒有奏效。如果可能的話,讓我知道我是否遺漏了一些東西。我更喜歡選項2並且工作。 –
serialNo應該在頁面瀏覽中持久保存。因此,您應該保存它並在需要時檢索它以保持其值:'Session [「serialNo」] = serialNo;''和'serialNo = int.Parse(Session [「serialNo」]。ToString());' – TruthSeeker
這應該是在同一頁。是否需要保持會話中的值? –