I have an MVC web application that returns a table. I want to add a drop-down list to the watch page, which filters the table to the selected year. What is the right approach?
I am currently creating a drop-down list that I populate using jQuery. I created the onChange command for postback, but I donโt know how to get the selected dropdown value in the controller.
Here are the code snippets that I have:
In the controller:
public ActionResult Index() { int year = 2012; var vu_Estimates = dbBudget.vu_Estimates.OrderByDescending(o => o.Expense).ThenBy(o => o.CategoryGroupSortOrder).ThenBy(o => o.SortOrder).Where(o => o.Year == year).ToList(); return View(vu_Estimates); } [AcceptVerbs(HttpVerbs.Post)] public ActionResult Index(FormCollection formCollection) { int year = 2012; var vu_Estimates = dbBudget.vu_Estimates.OrderByDescending(o => o.Expense).ThenBy(o => o.CategoryGroupSortOrder).ThenBy(o => o.SortOrder).Where(o => o.Year == year).ToList(); return View(vu_Estimates); }
In the view, I have the following:
<script type="text/javascript"> $(document).ready(function () { $.post("/Estimate/PopulateYears/", { Year: $(this).val() }, function (data) { populateDropdown($("#ddlYears"), data); }); }); function populateDropdown(select, data) { select.html(''); $.each(data, function (id, option) { select.append($('<option></option>').val(option.value).html(option.name)); }); } </script> <h2>Estimates List</h2> <div> <% using (Html.BeginForm()) { %> <select id="ddlYears" onchange="this.form.submit();"></select> | <%: Html.ActionLink("Create New Year of Estimates", "CreateEstimates", "Estimate") %> <%} %> </div> <table> <tr> <th></th> <th> EstimateID </th> <th> CategoryID </th> <th> Year </th> <th> EstimateAmount </th> <th> CategoryName </th> <th> SortOrder </th> <th> CategoryGroupSortOrder </th> <th> Expense </th> </tr> <% foreach (var item in Model) { %> <tr> <td> <%: Html.ActionLink("Edit", "Edit", new { id=item.EstimateID }) %> | <%: Html.ActionLink("Delete", "Delete", new { id=item.EstimateID })%> </td> <td> <%: item.EstimateID %> </td> <td> <%: item.CategoryID %> </td> <td> <%: item.Year %> </td> <td> <%: item.EstimateAmount %> </td> <td> <%: item.CategoryName %> </td> <td> <%: item.SortOrder %> </td> <td> <%: item.CategoryGroupSortOrder %> </td> <td> <%: item.Expense %> </td> </tr> <% } %> </table> <p> <%: Html.ActionLink("Create New", "Create") %> </p>
source share