Repeater와 함께 GridView에 대한 사용자 지정 페이지 매김을 사용하고 있습니다.사용자 지정 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에서 시작하여 다른 페이지에 대해 동일한 :하지만 문제는 내가 자동 일련 번호를 생성하려면 다음을 사용할 때 제대로 작동하지 않는 것입니다. 이 문제를 해결할 방법이나 다른 효율적인 기법이 있습니까?
나는 자동으로 일련 번호를 생성하려면이 시도했다 :. 그런 다음 마침내 this, int serialNo = 1; protected void detailsGridView_RowDataBound (Object sender, GridViewRowEventArgs e) {if (e.Row.RowType == DataControlRowType.DataRow) {if (String.IsNullOrEmpty ((Label) 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
이것은 같은 페이지에 있어야합니다. 세션에서 값을 유지해야합니까? –