2012-05-14 116 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