На моей веб-странице отображается таблица данных, и я хочу дать пользователю возможность сортировать эти данные с помощью раскрывающегося списка (например, по имени, фамилии, состоянию и т. Д.).
Я хотел бы использовать Ajax для загрузки отсортированных данных в таблицу данных без обновления страницы.Я также хотел бы использовать javascript ненавязчивым способом, чтобы пользователь мог все еще сортировать, если javascript отключен.Я впервые пробую этот подход.
Я следовал вместе с некоторым кодом в 'ASP.NET MVC In Action' в качестве моего шаблона.На данный момент у меня есть:
Веб-страница
<% using (Html.BeginForm("SortCourseData", "Summary", FormMethod.Post, new { id = "summarysort"})) %>
<% { %>
<div id="sort"><%=Html.DropDownList("SortSelection", Model.sortList, new { onchange="this.form.submit();" })%> </div>
<% } %>
Рендеринг HTML
<form action="/Summary/SortCourseData" id="summarysort" method="post">
<div id="sort"><select id="SortSelection" name="SortSelection" onchange="this.form.submit();"><option>Incomplete</option>
<option>By first name</option>
<option>By last name</option>
<option>By state</option>
</select> </div>
</form>
Jquery
$('form#summarysort').submit(function(event) {
event.preventDefault();
var sortKey = $("#SortSelection").val();
hijack(this, updateList, sortKey, "html")
});
function hijack(form, callback, sortKey, format) {
$.ajax({
url: '/Summary/SortCourseData',
type: "POST",
data: 'SortSelection=sortKey',
dataType: format,
success: callback
});
}
function updateList(result) {
$('div#datadisplayarea').html(result);
}
Контроллер
public ActionResult SortCourseData(string SortSelection)
{
SummaryViewModel m = new SummaryViewModel();
SummaryViewData modelData = m.GetViewModelData(SortSelection);
if (Request.IsAjaxRequest())
return PartialView("SummaryCourseList", modelData);
return View("Index", modelData);
}
Проблема, с которой я сталкиваюсь, заключается в том, что при выборе метода сортировки в раскрывающемся списке событие submit
в моемJQuery не захватывает событие.Если я вставлю простое alert();
в блок кода, я не получу предупреждение о том, что оно не подключается к событию отправки формы.
Как я могу успешно перехватить событие отправки формы, чтобы яможно использовать ajax для обновления моей таблицы курсов?Любое руководство будет оценено ...