This is a migrated thread and some comments may be shown as answers.

[Solved] Data in the Detail grid of Telerik ASP.Net MVC Master/Detail grid not getting populated

1 Answer 163 Views
Grid
This is a migrated thread and some comments may be shown as answers.
This question is locked. New answers and comments are not allowed.
Rajesh
Top achievements
Rank 1
Rajesh asked on 31 Mar 2011, 01:10 AM
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()

.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
        }
    }
}

1 Answer, 1 is accepted

Sort by
0
Atanas Korchev
Telerik team
answered on 31 Mar 2011, 07:25 AM
Hello Rajesh,

 The only problem I see in your code is that there is a whitespace in the Name of the nested grid. This is not supported as the name is rendered as the html id attribute of the grid element. Try removing the space or replace it with some non-whitespace symbol.

 If this does not help I would ask you to submit a sample project which reproduces your scenario.

Greetings,
Atanas Korchev
the Telerik team
Tags
Grid
Asked by
Rajesh
Top achievements
Rank 1
Answers by
Atanas Korchev
Telerik team
Share this question
or