2013-01-05 47 views
1

我正在嘗試創建一個簡單的pager用戶控件,該控件將用於ASP.NET中繼器的頁腳中。UserControl在回發後丟失ViewState

每次用戶點擊下一步,我想將PageCounter增加10並將值保存在ViewState中。 它的工作原理我第一次點擊lbNext但後來它不斷變得重置爲10和ViewState["PageCounter"]爲空

我試過裝飾我的[PersistenceMode(PersistenceMode.Attribute)]但仍沒有運氣財產。爲什麼這個值不被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:&nbsp;<asp:Label ID="lblName" runat="server" Text='<%# Bind("FirstName") %>' /> 
        </td> 
       </tr> 
       <tr> 
        <td> 
         Surname:&nbsp;<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> 
+0

你可以發佈代碼的地方/如何添加到傳呼機/頁面的「傳呼機」? –

+0

當然,請參閱編輯 –

+0

當我用ASP.NET開發時,我不記得使用'PersistenceMode'。從一點谷歌搜索,它似乎是用來讓控制自動保持其數據沒有視圖狀態(或利用幕後的視圖狀態/會話狀態)。可能舊的值被自動保留,並且當ASP.NET在回發時重建控件時,用'0'覆蓋Viewstate的值。如果你拋棄了'PersistenceMode'屬性會發生什麼?此外,請嘗試運行調試器,看看'setter'是否正在使用舊數據進行觸發,而不是您期望的或者失靈。 –

回答

1

當您的數據綁定到您的Repeater(「booksRepeater」)時,您的代碼不會顯示。確保你及時綁定你的數據。 聽起來像這個問題:Maintaining viewstate of a repeater

+0

非常感謝,實際上解決了我的問題。我意識到,即時重新綁定在每個帖子後面的中繼器,呃! –

+0

並非所有的問題都很大。 ;-)很高興你找到它! – Jacco