Asp.net排序转发器列

时间:2018-05-03 00:18:00

标签: asp.net webforms viewstate

我的aspx页面上有一个基本的转发器,它在后面的代码中使用了viewstate。现在这个工作完全正常,但是由于它创建了巨大的视图状态,我的页面开始加载非常慢,以及非常重量级的Web控件链接按钮。

代码示例:

protected void SortButtonCommand(object sender, CommandEventArgs e) {
    var curSort = Convert.ToString(ViewState[SortHelper.SortViewstateFieldKey]);
    var curDir = Convert.ToString(ViewState[SortHelper.SortViewstateDirKey]);
    var selSort = Convert.ToString(e.CommandArgument);
    ViewState[SortHelper.SortViewstateFieldKey] = selSort;
    BindRepeater();
}

private void BindRepeater() {
    // some code
    if(ViewState[SortHelper.SortViewstateFieldKey] != null) {
        var curSort = Convert.ToString(ViewState[SortHelper.SortViewstateFieldKey]);
        var curDir = Convert.ToString(ViewState[SortHelper.SortVieewstateDirKey]);
        switch(curSort) {
            case "ID":
                if(String.IsNullOrEmpty(curDir) || curDir.Equals(SortHelper.SortDirAsc)) {
                    data = data.OrderBy(a => a.Id).ToList();
                }else {
                    data = data.OrderByDescending(a => a.Id).ToList();
                }
                break;
            // more sorting based on the curSort value
        }
    }
}

前端代码:

<cms:BasicRepeater runat="server" ID="rptData" OnItemCommand="RptDataItemCommand" ItemType="WebService call">
    <HeaderTemplate>
        <table>
            <tr>
                <th><asp:LinkButton ID="lnkBtnId" runat="server" OnCommand="SortButtonCommand" CommandArgument="ID" Text="ID" /></th>
                // more th's
            </tr>
    </HeaderTemplate>
//// closing tags  

所以,现在这一切都有效。但有没有什么方法可以删除viewstate和也许是一个转发器的使用,也许可以使用AJAX填充HTML表并进行排序而不使用webcontrol来减少视图状态,以便我的页面加载更快?如果AJAX是可能的,那么你们能指出我正确的方向来开始这一切吗?

感谢任何帮助!

0 个答案:

没有答案