This question is locked. New answers and comments are not allowed.
I wanted to ajax-ify my grid's sorting, paging, filtering while leaving the initial load still done via server binding. Once I switched to using GridModel<T> however my grid no longer renders correctly; the raw json data is being displayed. Can you advise what I am doing wrong?
Controller:
Search View Page (javascript removed)
Search Results User Control:
Thanks
Controller:
//[AcceptVerbs(HttpVerbs.Post)] |
[GridAction] |
public ActionResult SearchAjax(PrimaryFacilitySearchViewModel model) |
{ |
var data = PhyRepository.GetPhysicianPrimaryFacilities(ppf => |
ppf.Provider.LastNameFirst.Contains( |
model.ProviderName.ToUpper())); |
var list = data.ToList(); |
var viewModelList = Mapper.Map<IList<PhysicianPrimaryFacility>, IList<PrimaryFacilityViewModel>>(list); |
ViewData["PpfSearchCriteria"] = model; |
return PartialView(new GridModel<PrimaryFacilityViewModel> { Data = viewModelList }); |
//return PartialView("PrimaryFacilitySearchResults", viewModelList); |
} |
Search View Page (javascript removed)
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" |
Inherits="System.Web.Mvc.ViewPage<TWMaintenance.ViewModels.Physician.PrimaryFacilitySearchViewModel>" %> |
<asp:Content ID="PpfSearchHeaderContent" ContentPlaceHolderID="TitleContent" runat="server"> |
Primary Facility |
</asp:Content> |
<asp:Content ID="PpfSearchScriptContent" ContentPlaceHolderID="ScriptContent" runat="server"> |
// removed for brevity |
</asp:Content> |
<asp:Content ID="PpfSearchMainContent" ContentPlaceHolderID="MainContent" runat="server"> |
<h2>Provider Primary Facility Search</h2> |
<% |
// don't use new {routeValue = Model}; that was resulting in null model values passed to search result control |
using (Ajax.BeginForm("SearchAjax", "PhysicianPrimaryFacility", this.Model, |
new AjaxOptions { UpdateTargetId = "searchResults", OnBegin = "ShowWaitCursor", OnComplete = "RevertCursor", |
OnSuccess="SearchSuccess", LoadingElementId = "ajaxLoader" }, new { id = "ppfSearchForm" })) |
{%> |
<fieldset> |
<legend>Physician Primary Facility Search</legend> |
<div style="float: left; width: 100px; padding: 10px;"> |
<label for="ProviderName">Provider Name</label> |
<%= Html.TextBox("ProviderName", string.Empty, new { maxlength = 50, style = "width:100px", @class = "required_group" })%> |
</div> |
<div style="float: left; width: 100px; padding: 10px;"> |
<label for="PhyId">Provider Id</label> |
<%= Html.TextBox("PhyId", string.Empty, new { maxlength = 50, style = "width:100px", @class = "required_group" })%> |
</div> |
<p style="clear: left;"> |
<br /> |
<input type="submit" value="Search" id="ppfSearchButton" style="width:75px" /> |
|
<input type="button" id="clearCriteriaButton" value="Clear" style="width:75px" /> |
</p> |
</fieldset> |
<div id="ajaxLoader" style="display:none"><img src="<%= Url.Content("~/Content/loading-gears.gif") %>" alt="AJAX loader" /></div> |
<% } %> |
<div id="searchResults"></div> |
</asp:Content> |
Search Results User Control:
<%@ Control Language="C#" |
Inherits="System.Web.Mvc.ViewUserControl<Telerik.Web.Mvc.GridModel<TWMaintenance.ViewModels.Physician.PrimaryFacilityViewModel>>" %> |
<%@ Import Namespace="TWMaintenance.ViewModels.Physician" %> |
<% |
Html.Telerik().Grid<PrimaryFacilityViewModel>(Model.Data) |
.Name("List") |
.Columns(cols => |
{ |
cols.Add(ppf => ppf.PpfId).Title("Id"); |
cols.Add(ppf => ppf.StartDate).Format("{0:MM/dd/yyyy}"); |
cols.Add(ppf => ppf.EndDate); |
cols.Add(ppf => ppf.FacilityContractFacContractId).Title("Fcon Id"); |
cols.Add(ppf => ppf.FacilityContractName).Title("Facility Contract"); |
cols.Add(ppf => ppf.ProviderLastNameFirst).Title("Provider"); |
}) |
.Pageable(settings => settings.PageSize(20)) |
.Sortable() |
.PrefixUrlParameters(false) |
.Filterable() |
.Ajax(ajax => ajax.Action("SearchAjax", "PhysicianPrimaryFacility", ViewData["PpfSearchCriteria"])) |
.Render(); |
%> |
Thanks