Сортировка / фильтрация таблиц с помощью ASP.NET MVC 5 и Entity Framework - PullRequest
0 голосов
/ 14 сентября 2018

Я следовал Учебному пособию Contoso от Microsoft, и мои Scaffolding построили извлечение таблиц данных из внешнего SQL Server.Я попытался вставить код, аналогичный тому, что есть в руководстве, и он создает ссылки, но не сортирует и не фильтрует, как следует.Это только обновляет страницу.Кажется, что-то работает, потому что, когда я нажимаю ссылки для сортировки, параметры URL меняются, но таблица не меняется.

Вот контроллер для сортировки / фильтрации. Действия

public ActionResult Index(string sortOrder, string searchString)
    {
        ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "Name_desc" 
: "";
        ViewBag.DateSortParm = sortOrder == "Date" ? "Date_desc" : "Date";
        var schedules = from s in db.schedules
                       select s;
        if (!String.IsNullOrEmpty(searchString))
        {
            schedules = schedules.Where(s =>s.designation.Contains(searchString)
                                   || s.Function.Contains(searchString));
        }
        switch (sortOrder)
        {
            case "Name_desc":
                schedules = schedules.OrderByDescending(s => s.designation);
                break;
            case "Date":
                schedules = schedules.OrderBy(s => s.promise_ship_date);
                break;
            case "Date_desc":
                schedules = schedules.OrderByDescending(s => s.promise_ship_date);
                break;
            default:
                schedules = schedules.OrderBy(s => s.promise_ship_date);
                break;
        }
        return View(db.schedules.ToList());
    }

Вот моя страница указателя

@model IEnumerable<WebApplication1.Models.schedule>

@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Index</h2>

<p>
@Html.ActionLink("Create New", "Create")
</p>

@using (Html.BeginForm())
{
<p>
    Find by designation or function: @Html.TextBox("searchString")
    <input type="submit" value="Search"/>
</p>
}

<table class="table">
<tr>
    <th>
        @Html.ActionLink("Designation", "Index", new { sortOrder = ViewBag.NameSortParm })
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Function)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.lv_mv)
    </th>
    <th>
        @Html.ActionLink("Promise Ship Date", "Index", new { sortOrder = ViewBag.DateSortParm })

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 15 сентября 2018

Вы сортируете свою коллекцию с именем schedules, но возвращаете несортированные расписания прямо из базы данных на просмотр.Попробуйте return View(schedules).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...