ASP.NET 중계기의 바닥 글에 사용할 간단한 페이징 사용자 컨트롤을 만들려고합니다.UserControl이 포스트 백 후에 ViewState를 잃습니다.
사용자가 다음을 클릭 할 때마다 PageCounter를 10 씩 증가시키고 값을 ViewState에 저장하고 싶습니다. 그것은 내가 lbNext 클릭 처음 작동하지만 나중에는 난 아직도 [PersistenceMode(PersistenceMode.Attribute)]
하지만 운이 내 속성을 장식하려고했습니다
10 ViewState["PageCounter"]
으로 재설정을 점점 null의 유지합니다. 값이 ViewState에 지속되지 않는 이유는 무엇입니까?
ASCX :
<%@ Control Language="C#" EnableViewState="true" AutoEventWireup="true" CodeBehind="Pager.ascx.cs" Inherits="WebApplication6.Pager" %>
<asp:LinkButton ID="lbPrevious" runat="server" OnCommand="SetPage" CommandArgument="Previous">Previous</asp:LinkButton>
<asp:TextBox ID="txtPage" runat="server" EnableViewState="true" Enabled="false"></asp:TextBox>
<asp:LinkButton ID="lbNext" runat="server" OnCommand="SetPage" CommandArgument="Next">Next</asp:LinkButton>
코드 숨김
편집 :
가 여기 중계기에 호출기 사용자 컨트롤을 추가하는 코드입니다 :
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Repeater.aspx.cs" Inherits="WebApplication6.Repeater" %>
<%@ Register Src="Pager.ascx" TagName="Pager" TagPrefix="asp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Repeater control</title>
</head>
<body>
<form id="form1" runat="server">
<asp:Repeater ID="booksRepeater" runat="server">
<ItemTemplate>
<table>
<tr>
<td>
Name: <asp:Label ID="lblName" runat="server" Text='<%# Bind("FirstName") %>' />
</td>
</tr>
<tr>
<td>
Surname: <asp:Label ID="lblSurname" runat="server" Text='<%# Bind("LastName") %>' />
</td>
</tr>
</table>
</div>
</ItemTemplate>
<FooterTemplate>
<asp:Pager ID="pager" runat="server" />
</FooterTemplate>
</asp:Repeater>
</form>
</body>
</html>
'페이저'를 중계기/페이지에 추가하는 코드를 게시 할 수 있습니까? –
확실히 –
편집을 참조하십시오. ASP.NET에서 개발할 때 PersistenceMode를 사용하여 리콜하지 않았습니다. 약간의 인터넷 검색에서보기 상태없이 데이터를 자동으로 유지 관리하는 데 사용되는 것처럼 보입니다 (또는 장면 뒤에서 viewstate/세션 상태를 활용). ASP.NET에서 포스트 백 컨트롤을 다시 작성할 때 이전 값이 자동으로 지속되고 Viewstate의 값이 '0'으로 덮어 쓰기 될 수 있습니다. 'PersistenceMode' 속성을 버리면 어떻게 될까요? 또한, 디버거를 실행하고'setter'가 기대했던 것보다 오래된 데이터로 시작하는지, 순서가 맞는지 확인하십시오. –