У меня есть основной повторитель на моей странице 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 возможен, вы, ребята, можете указать мне правильное направление, чтобы начать все это?
Любая помощь приветствуется, спасибо!