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>
4

1 回答 1

0

看来您总是有约束力,PageLoad因此以前提供的订单会丢失。IsPostback仅当为假时才绑定。(您需要将 ListViewEnableViewState设置为 true,这是默认值)。

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

当用户单击“排序”按钮时,将触发该事件,您的事件将相应地对数据进行排序和绑定。

如果页面被重新加载,并且你不重新绑定它就PageLoad足够了。

但是,如果由于某种原因您确实需要重新绑定 in PageLoad,则您要做的就是将排序存储在ViewState,中HiddenFieldSession以便您可以从那里获取值以在绑定之前对数据进行排序PageLoad

您应该获取排序和绑定到新方法的代码,并从排序和PageLoad事件中调用它。

于 2012-05-14T10:22:20.560 回答