This question is locked. New answers and comments are not allowed.
Hi,
I am working on a Proof of Concept using ASP.NET MVC2 framework, where I need to display the data in a grid (Master/Detail format) based on the search criteria. So for that I created the a parent view (Index.aspx) and a Partial View (SearchPanel.ascx) and controller (HomeController.cs) exactly as discribed in Telerik Extensions for ASP.Net demos, but still my detail grid is not getting populated.
In my implementation, Index.aspx is my parent view which is rendering a ParitialView (SearchPanel.ascx) and also a Telerik ASP.Net MVC Master Detail grid.
Now, on running the application, I can see the Search panel and also the Grid where the parent grid displays the data (based on the [GridAction] method PolicySearchResult in the controller which is specified in Index.aspx as (DataBinding(dataBinding => dataBinding.Ajax().Select("PolicySearchResult", "Home")), but the other [GridAction] method MTQSearchResult in the controller which is specified in Index.aspx as DataBinding(dataBinding => dataBinding.Ajax()
Am I missing someting here?
View Code (Index.aspx):
Controller Code:
I am working on a Proof of Concept using ASP.NET MVC2 framework, where I need to display the data in a grid (Master/Detail format) based on the search criteria. So for that I created the a parent view (Index.aspx) and a Partial View (SearchPanel.ascx) and controller (HomeController.cs) exactly as discribed in Telerik Extensions for ASP.Net demos, but still my detail grid is not getting populated.
In my implementation, Index.aspx is my parent view which is rendering a ParitialView (SearchPanel.ascx) and also a Telerik ASP.Net MVC Master Detail grid.
Now, on running the application, I can see the Search panel and also the Grid where the parent grid displays the data (based on the [GridAction] method PolicySearchResult in the controller which is specified in Index.aspx as (DataBinding(dataBinding => dataBinding.Ajax().Select("PolicySearchResult", "Home")), but the other [GridAction] method MTQSearchResult in the controller which is specified in Index.aspx as DataBinding(dataBinding => dataBinding.Ajax()
.Select("MTQSearchResult", "Home", new { policyId = "<#= Number #>" }))
to populate my detail grid is not getting called, as a result detail grid is displyed but with no data.
Am I missing someting here?
View Code (Index.aspx):
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> Home Page </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <% Html.RenderPartial("SearchPanel"); %> <%= Html.Telerik().Grid<TelerikMvcUserAccess_Web.Models.PolicySearchResult>() .Name("PolicyDataGrid") .Columns(columns => { columns.Bound(m => m.Number).Width(100); columns.Bound(m => m.Action).Width(100); columns.Bound(m => m.State).Width(100); columns.Bound(m => m.Company).Width(200); columns.Bound(m => m.Agency).Width(200); columns.Bound(m => m.Status).Width(100); columns.Bound(m => m.LOB).Width(100); columns.Bound(m => m.EffExpDate).Width(100); columns.Bound(m => m.Premium).Width(100); columns.Bound(m => m.Created).Width(150); }) .ClientEvents(events => events.OnRowDataBound("policySearchResult_onRowDataBound")) .DetailView(details => details.ClientTemplate( Html.Telerik().TabStrip() .Name("TabStrip_<#= Number #>") .SelectedIndex(0) .Items(items => { items.Add().Text("Mid-Term Quotes").Content( Html.Telerik().Grid<TelerikMvcUserAccess_Web.Models.MTQSearchResult>() .Name("Quote <#= Number #>") .Columns(columns => { columns.Bound(o => o.MidTermQuoteReason).Width(100); columns.Bound(o => o.MidTermQuoteChangePremium).Width(90); columns.Bound(o => o.MidTermQuotePremium).Width(90); }) .DataBinding(dataBinding => dataBinding.Ajax() .Select("MTQSearchResult", "Home", new { policyId = "<#= Number #>" })) .Pageable() .Sortable() .Filterable() .ToHtmlString()); }) .ToHtmlString() )) .DataBinding(dataBinding => dataBinding.Ajax().Select("PolicySearchResult", "Home")) .Scrollable(scrolling => scrolling.Enabled(true)) .Sortable(sorting => sorting.Enabled(true)) .Pageable(paging => paging.Enabled(true)) .Filterable(filtering => filtering.Enabled(true)) .Groupable(grouping => grouping.Enabled(true)) .Footer(true) %> <script type="text/javascript"> function expandFirstRow(grid, row) { if (grid.$rows().index(row) == 0) { grid.expandRow(row); } } function policySearchResult_onRowDataBound(e) { var grid = $(this).data('tGrid'); expandFirstRow(grid, e.row); } </script> </asp:Content> Controller Code:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using TelerikMvcUserAccess_Web.Models; using TelerikMvcUserAccess_Web.ViewModels; using Telerik.Web.Mvc; namespace TelerikMvcUserAccess_Web.Controllers { [HandleError] public class HomeController : Controller { public ActionResult Index() { FillDropDowns(); return View(); } public ActionResult SearchPanel() { return View(); } [GridAction] public ActionResult PolicySearchResult() { #region PolicySearchResult string firstName = null; var result = new List<PolicySearchResult>(); result = GetPolicyGridData(firstName); Session["PolicyDataGrid"] = result; if (Session["PolicyDataGrid"] != null) { var policyGridData = (List<PolicySearchResult>)Session["PolicyDataGrid"]; if (policyGridData.Count > 0) { return View(new GridModel(policyGridData)); } else { var emptyGrid = new List<PolicySearchResult>(); return View(new GridModel(emptyGrid)); } } else { var emptyGrid = new List<PolicySearchResult>(); return View(new GridModel(emptyGrid)); } #endregion PolicySearchResult } [GridAction] public ActionResult MTQSearchResult(string policyId) { #region MTQSearchResult var result = new List<MTQSearchResult>(); result = GetMidTermGridData(policyId); Session["MidTermQuoteDataGrid"] = result; if (Session["MidTermQuoteDataGrid"] != null) { var midTermQuoteGridData = (List<MTQSearchResult>)Session["MidTermQuoteDataGrid"]; if (midTermQuoteGridData.Count > 0) { return View(new GridModel(midTermQuoteGridData)); } else { var emptyGrid = new List<MTQSearchResult>(); return View(new GridModel(emptyGrid)); } } else { var emptyGrid = new List<MTQSearchResult>(); return View(new GridModel(emptyGrid)); } #endregion MTQSearchResult } public List<PolicySearchResult> GetPolicyGridData(string firstName) { #region GetPolicyGridData var policySearchModelFiller = new PolicySearchResultModelList(); var result = policySearchModelFiller.GetPolicyData(firstName); return result; #endregion GetPolicyGridData } public List<MTQSearchResult> GetMidTermGridData(string policyId) { #region GetMidTermGridData var midTermQuoteSearchModelFiller = new MTQSearchResultModelList(); var result = midTermQuoteSearchModelFiller.GetMidTermQuoteData(policyId); return result; #endregion GetMidTermGridData } /// <summary> /// Function to fill the Drop down values for LOB, State and View Types in the /// Search Panel /// </summary> public void FillDropDowns() { #region FillDropDowns List<SelectListItem> itemsLineOfBusiness = new List<SelectListItem>(); itemsLineOfBusiness.Add(new SelectListItem { Text = "", Value = "", Selected = true }); itemsLineOfBusiness.Add(new SelectListItem { Text = "Personal Auto", Value = "Personal Auto" }); itemsLineOfBusiness.Add(new SelectListItem { Text = "Personal Other Lines", Value = "Personal Multiline" }); ViewData["SearchByLOB"] = itemsLineOfBusiness; List<SelectListItem> itemsState = new List<SelectListItem>(); itemsState.Add(new SelectListItem { Text = "", Value = "", Selected = true }); itemsState.Add(new SelectListItem { Text = "Arizona", Value = "AZ" }); itemsState.Add(new SelectListItem { Text = "Colorado", Value = "AZ" }); ViewData["SearchByState"] = itemsState; List<SelectListItem> itemsViewType = new List<SelectListItem>(); itemsViewType.Add(new SelectListItem { Text = "Default", Value = "Default", Selected = true }); itemsViewType.Add(new SelectListItem { Text = "Premium Change", Value = "Premium Change" }); itemsViewType.Add(new SelectListItem { Text = "Trailing docs", Value = "Trailing docs" }); ViewData["SearchByViewTypes"] = itemsViewType; #endregion FillDropDowns } } }