Click here to Skip to main content
15,894,180 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I'm trying to create a master detail page but the data not displayed in the grid


this is my View:

XML
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcApplication43.Models.MasterDetailViewModel>>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    test5

     <script type="text/javascript">

         function expandFirstRow(grid, row) {
             if (grid.$rows().index(row) == 0) {

                 grid.expandRow(row);
             }
         }

         function employees_onRowDataBound(e) {
             var grid = $(this).data('tGrid');
             expandFirstRow(grid, e.row);
         }

         function orders_onRowDataBound(e) {
             var grid = $(this).data('tGrid');
             expandFirstRow(grid, e.row);
         }
    </script>
</asp:Content>



<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>test5</h2>

<%= Html.Telerik().Grid(Model)
        .Name("Employees")
        .Columns(columns =>
        {
            columns.Bound(e => e.Lot_Number).Width(140);
            columns.Bound(e => e.Item_Number).Width(140);
            columns.Bound(e => e.QC_Approval).Width(140);
            columns.Bound(e => e.QCDateApproval).Width(140);
            columns.Bound(e => e.QCUser).Width(140);
            columns.Bound(e => e.QA_Release).Width(140);
            columns.Bound(e => e.QADateRelease).Width(140);
            columns.Bound(e => e.QAUser).Width(140);

        })
        .ClientEvents(events => events.OnRowDataBound("employees_onRowDataBound"))
        .DetailView(details => details.ClientTemplate(
                Html.Telerik().Grid(Model)
                        .Name("Orders_<#= Lot_Number #>")
                    .Columns(columns =>
                    {
                         columns.Bound(o => o.ResultDefinition_ID).Visible(false).Width(101);
                        columns.Bound(o => o.ResultDefinition_Nr).Width(101);
                        columns.Bound(o => o.ResultName).Width(101);
                        columns.Bound(o => o.LIMSName).Width(101);
                        columns.Bound(o => o.Unit).Width(101);
                        columns.Bound(o => o.LowLimit).Width(101);
                         columns.Bound(o => o.HighLimit).Width(101);

                    })

                    .ClientEvents(events => events.OnRowDataBound("orders_onRowDataBound"))
                    .DetailView(ordersDetailView => ordersDetailView.ClientTemplate(

                        Html.Telerik().Grid(Model)
                            .Name("OrderDetails_<#= ResultDefinition_ID #>")
                            .Columns(columns =>
                            {

                                columns.Bound(od => od.Result_Num).Width(200);
                                columns.Bound(od => od.Result_Text).Width(200);

                            })
                            .DataBinding(dataBinding => dataBinding.Ajax()
                                 .Select("_OrderDetailsForOrderHierarchyAjax", "Home", new {
                                     ResultDefinition_ID = "<#= ResultDefinition_ID #>" }))
                            .Pageable()
                            .Sortable()
                            .ToHtmlString()
                     ))
                    .DataBinding(dataBinding => dataBinding.Ajax()
                        .Select("_OrdersForEmployeeHierarchyAjax", "Home", new { Lot_Number =
                            "<#= Lot_Number #>" }))
                    .Pageable()
                    .Sortable()
                    .Filterable()
                    .ToHtmlString()
        ))
        .DataBinding(dataBinding => dataBinding.Ajax().Select("_EmployeesHierarchyAjax", "Home"))
        .Pageable(paging => paging.PageSize(5))
        .Scrollable(scrolling => scrolling.Height(580))
        .Sortable()
    %>



</asp:Content>


and this is my controler:



C#
public ActionResult test5()
        {
            return View();
        }
        [AcceptVerbs(HttpVerbs.Post)]
        [GridAction]
        public ActionResult _EmployeesHierarchyAjax()
        {
          var ListMatiere=(from u in new DB_26XEntities().Tbl_Raw_Material_Batch
                                                    orderby u.Lot_Number
                                                    select new MasterDetailViewModel

                            {
                                
                                Lot_Number=u.Lot_Number,
                                RawMaterialBatch_ID=u.RawMaterialBatch_ID,
                                Item_Number=u.Item_Number,
                                QC_Approval=(bool)u.QC_Approval,
                                QCDateApproval=u.QCDateApproval,
                                QCUser=u.QCUser,
                                QA_Release=(bool)u.QA_Release,
                                QADateRelease=u.QADateRelease,
                                QAUser=u.QAUser
                               
                            });
            
            return View(new GridModel(ListMatiere));
        }
        [AcceptVerbs(HttpVerbs.Post)]
        [GridAction]
        public ActionResult _OrdersForEmployeeHierarchyAjax(int RawMaterialResult_Id)
        {
            var MatResult = (from o in new DB_26XEntities().Tbl_Raw_Material_Result
                             where o.RawMaterialResult_Id == RawMaterialResult_Id
                             select new MasterDetailViewModel
                            {
                    RawMaterialResult_Id=o.RawMaterialResult_Id,
                    Lot_Number=o.Lot_Number,
       
                    ResultDefinition_Nr=o.ResultDefinition_Nr,
                    Result_Num=(float)o.Result_Num,
        
                    Result_Text=o.Result_Text
         

                            });
            return View(new GridModel(MatResult));
        }
        [AcceptVerbs(HttpVerbs.Post)]
        [GridAction]
        public ActionResult _OrderDetailsForOrderHierarchyAjax(int ResultDefinition_Nr)
        {
            var ResultDef =( from o in new DB_26XEntities().Tbl_ResultDefinition
                         where o.ResultDefinition_Nr == ResultDefinition_Nr
                             select new MasterDetailViewModel
                         {
                             ResultDefinition_ID=o.ResultDefinition_ID,
                             ResultDefinition_Nr=o.ResultDefinition_Nr,
                             ResultName=o.ResultName,
                             LIMSName=o.LIMSName,
                             Unit=o.Unit,
                             LowLimit=(float)o.LowLimit,
                             HighLimit=(float)o.HighLimit
                         });
            return View(new GridModel(ResultDef));
        }



i need help PLZ :(
Posted
Updated 25-Mar-13 0:07am
v2
Comments
CringTee 15-Apr-13 23:51pm    
I think you need to set data keys like this:
.DataKeys(dataKey => dataKey.Add(key => key.Lot_Number))
hope it helped.

1 solution

you can set data route key so that telerik knows by what keys to route.


.Name("Employees")
.DataKeys(dataKey => dataKey.Add(key => key.Lot_Number))// key to route
.Columns(columns =>
{
columns.Bound(e => e.Lot_Number).Width(140);
columns.Bound(e => e.Item_Number).Width(140);
columns.Bound(e => e.QC_Approval).Width(140);

thanks
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900