2012-05-14 122 views
0

我有我想排序的列表視圖。 我的問題是,當我單擊排序列時,Onsorting事件僅在我再次綁定頁面載入數據時觸發。 這意味着在每個頁面上,我將首先綁定數據,然後我可以捕獲OnBinding事件,之後我可以再次重新綁定數據。 有沒有更好的方法來做到這一點。基本上我想要的是隻在onsorting事件排序列表視圖

<asp:ListView ID="TempList" runat="server" OnSorting="TempList_sorting"> 
    <LayoutTemplate> 
     <table > 
      <tr> 
       <th > 
        <asp:LinkButton runat="server" ID="btnSortVoorletters2" CommandName="Sort" Text="Voorletters" 
         CommandArgument="Voorletters" OnClick="btnSortVoorletters_Click" /> 
       </th> 
      </tr> 
       <tr runat="server" id="itemPlaceholder"> 
      </tr> 
     </table> 
    </LayoutTemplate> 
    <ItemTemplate> 
     <tr> 
      <td> 
       <asp:Label ID="EmpIDLabel" runat="server" Text='<%# Eval("Naam") %>'/> 
      </td> 
     </tr> 
    </ItemTemplate> 
    <EmptyDataTemplate> 
    <p>Empty text that will be displayed.</p> 
</EmptyDataTemplate> 

回答

0

它lloks這使以前提供的訂單丟失你總是在PageLoad結合數據綁定。僅當IsPostback爲假時才綁定。 (您需要將ListView EnableViewState設置爲true,這是默認值)。

if(!IsPostback) 
{ 
    // do the binding 
} 

當用戶單擊「排序」按鈕時,事件將被觸發,並且您的事件將相應地對數據進行排序和綁定。

如果頁面被重新載入,並且你沒有在PageLoad重新綁定它,這就足夠了。

但是,如果由於某種原因,你真的需要在PageLoad重新綁定,你所要做的是將分揀存儲在ViewState,一個HiddenFieldSession,這樣你可以從那裏的價值,結合之前對數據進行排序它在PageLoad

您應該將代碼分類並綁定到新方法,並從Sort和PageLoad事件中調用它。

+0

您好,謝謝它,當我設置viewstate啓用。唯一的問題是這個客戶端不希望啓用viewstate,因爲它可以擁有很大的音量。是不是因爲這個原因禁用視圖狀態/我alwasys認爲你不應該使用它謝謝你的迴應 – Spooks