Asp.net сортировка повторителей столбцов - PullRequest
0 голосов
/ 03 мая 2018

У меня есть основной повторитель на моей странице aspx с сортировкой, которая использует viewstate в коде позади. Теперь это работает отлично, но моя страница начинает загружаться очень медленно из-за огромного состояния просмотра, которое она создает, наряду с кнопками ссылок веб-элементов управления, которые также очень тяжелые.

Пример кода:

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 и выполнять сортировку без использования web-контролов, чтобы уменьшить viewstate, чтобы моя страница загружалась быстрее? Если AJAX возможен, вы, ребята, можете указать мне правильное направление, чтобы начать все это?

Любая помощь приветствуется, спасибо!

...