2009-04-05 12 views
2

Ich habe eine Standart-Seite innerhalb meines ListView-Steuerelements auf der Seite, und der Pager funktioniert, aber um zur nächsten Liste von Elementen zu gelangen, musste ich zweimal auf den Pager-Link klicken, bevor er sich tatsächlich bewegt nächster Satz von Gegenständen.Seltsames Pager-Verhalten in ListView

Der Code für den Pager ist:

<asp:ListView ID="lv_LostCard" runat="server" DataKeyNames="request_id" EnableViewState="false"> 
     <LayoutTemplate> 
       <table width="550" border="1" class="table"> 
        <asp:PlaceHolder ID="itemPlaceholder" runat="server" /> 
       </table> 
       <asp:DataPager ID="lv_Books_Pager" runat="server" PageSize="10"> 
        <Fields> 
         <asp:NextPreviousPagerField ShowFirstPageButton="false" ShowPreviousPageButton="true" ShowNextPageButton="false" /> 
         <asp:NumericPagerField /> 
         <asp:NextPreviousPagerField ShowFirstPageButton="false" ShowPreviousPageButton="false" ShowNextPageButton="true" ShowLastPageButton="false" /> 
        </Fields> 
       </asp:DataPager> 
      </LayoutTemplate> 
      <ItemTemplate>    
      </ItemTemplate> 
    </asp:ListView> 

und der Code-behind ist:

protected void Page_Load (object sender, EventArgs e) { wenn {(Page.IsPostBack!) getLostCardsList(); } }

protected void getLostCardsList() 
    { 
     using(LostCardsManagementDataContext LostCard = new LostCardsManagementDataContext()) 
     { 
      var getLostCardsList = from lc in LostCard.lostcard_request_cards 
            select lc; 
      lv_LostCard.DataSource = getLostCardsList; 
      lv_LostCard.DataBind(); 
     } 

Kann jemand mir sagen, was passiert und wie man es beheben?

Vielen Dank im Voraus

Antwort

4

Ich habe Probleme mit Listview aufrichtig.

Ich habe eine Lösung gefunden, die zu Ihrer Frage passt und scheinbar keine andere Lösung bietet. Sie müssen die OnPreRender-Methode aufrufen, um Ihre Quelle an listview neu zu binden.

protected void listview_PreRender(object sender, EventArgs e) 
{ 
    getLostCardsList();//your method for binding 
} 

adviced werden PreRender Ereignisse vor Ihrer Seite aufgerufen gerendert wird zu.Mehr deutlich, wenn Ihre Seite ein Postback Ereignis hat rendert again.That bedeutet, dass Sie Ihre Daten in einem Server-Sammlung speichern müssen (dh Session).

0

verbindlich sind Sie Listview in Code? Stellen Sie sicher, dass Sie das nur für Nicht-Postbacks tun.

+0

Ja, ich habe, in meinem Code hinter habe ich wenn (! Page.IsPostBack), es ist wirklich macht mich verrückt und ich habe keine Ahnung, warum es so verhält. – Dmitris

+0

Ich bearbeitete und fügte meinen Code in Frage auch hinzu. – Dmitris

0

Sie haben den ViewState in Ihrem ListView deaktiviert. Probieren Sie es mit dem Viewstate wieder aus.

1

DataBind im PagePropertiesChanged-Ereignis.

+0

Ich habe es versucht, aber es funktioniert nicht genau! – Myra