Created
November 12, 2012 07:00
-
-
Save adam-davis/4057894 to your computer and use it in GitHub Desktop.
Basic Dynamic Filter
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/ForumMain.master" | |
Inherits="System.Web.Mvc.ViewPage<List<MvcForums.Models.Forum>>" %> | |
<asp:Content ID="Content2" ContentPlaceHolderID="head" runat="server"> | |
<style type="text/css"> | |
#filterHeader | |
{ | |
margin-bottom: 10px; | |
font-size: 16px; | |
display:block; | |
} | |
</style> | |
<script type="text/javascript"> | |
var approvalFilterState = {}; | |
$(document).ready(function () { | |
var approvalFilterCheckboxes = $(".approvalFilterChkbox"); | |
for (var i = 0; i < approvalFilterCheckboxes.length; ++i) { | |
approvalFilterState[approvalFilterCheckboxes[i].value] = approvalFilterCheckboxes[i].checked; | |
} | |
}); | |
function filterResults(filterOption) { | |
approvalFilterState[filterOption.value] = !approvalFilterState[filterOption.value]; | |
var filterOption = determineApprovalFilterOption(); | |
updateAdminPanel(filterOption); | |
} | |
function updateAdminPanel(filterOption) { | |
$.ajax( | |
{ | |
type: 'POST', | |
url: '<%=Url.Action("Filter","Forum")%>/' + filterOption, | |
success: function (response) { | |
$('#mainDisplayArea').html(response); | |
}, | |
error: function (response) { | |
alert(response); | |
} | |
}); | |
} | |
function determineApprovalFilterOption() { | |
if (approvalFilterState["all"] || (approvalFilterState["approved"] && approvalFilterState["unapproved"])) | |
return "all"; | |
if (approvalFilterState["approved"]) | |
return "approved"; | |
if (approvalFilterState["unapproved"]) | |
return "unapproved"; | |
return "none"; | |
} | |
</script> | |
</asp:Content> | |
<asp:Content ID="Content3" ContentPlaceHolderID="header" runat="server"> | |
</asp:Content> | |
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server"> | |
<div style="float:left;" id="filterArea"> | |
<span id="filterHeader">Filters....</span> | |
<br /> | |
<input class="approvalFilterChkbox" type="checkbox" onclick="javascript: filterResults(this)" id="filterAll" value="all" /> All Reviews | |
<br /> | |
<input class="approvalFilterChkbox" type="checkbox" onclick="javascript: filterResults(this)" id="filterApproved" value="approved" /> Approved Reviews | |
<br /> | |
<input class="approvalFilterChkbox" type="checkbox" onclick="javascript: filterResults(this)" id="filterUnapproved" value="unapproved" /> Unapproved Reviews | |
<br /> | |
</div> | |
<div id="mainDisplayArea"> | |
<% @Html.Partial("FilterArea",Model); %> | |
</div> | |
</asp:Content> | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class ForumController : Controller | |
{ | |
// | |
// GET: /Forum/ | |
MvcForumsEntities _entities; | |
public List<Forum> _currentForums; | |
public ForumController() | |
{ | |
_entities = new MvcForumsEntities(); | |
_currentForums = new List<Forum>(); | |
} | |
[AcceptVerbs(HttpVerbs.Get)] | |
public ActionResult Filter() | |
{ | |
_entities = new MvcForumsEntities(); | |
var tempForums = (from forum in _entities.Forum select forum).ToList(); | |
return View(tempForums); | |
} | |
[AcceptVerbs(HttpVerbs.Post)] | |
public PartialViewResult Filter(string approvalFilter) | |
{ | |
switch(approvalFilter) | |
{ | |
case("approved"): | |
_currentForums = (from forum in _entities.Forum where forum.id != 1 select forum).ToList(); | |
break; | |
case("unapproved"): | |
_currentForums = (from forum in _entities.Forum where forum.id % 2 != 1 select forum).ToList(); | |
break; | |
case("none"): | |
_currentForums = new List<Forum>(); | |
break; | |
case("all"): | |
_currentForums = (from forum in _entities.Forum select forum).ToList(); | |
break; | |
} | |
return PartialView("FilterArea", _currentForums); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<List<MvcForums.Models.Forum>>" %> | |
<div class="phoneReviewArea"> | |
<% foreach (MvcForums.Models.Forum forum in Model) | |
{%> | |
holler | |
<%=forum.description %> | |
<%} %> | |
</div> | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public static void RegisterRoutes(RouteCollection routes) | |
{ | |
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); | |
routes.MapRoute("ForumFilter", | |
"Forum/Filter/{approvalFilter}", | |
new { controller = "Forum", action = "Filter", approvalFilter = "all" }); | |
routes.MapRoute( | |
"Default", // Route name | |
"{controller}/{action}/{id}", // URL with parameters | |
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults | |
); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment