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

[Solved] Template column inside DetailView in Telerik Grid MVC

0 Answers 145 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.
Garðar Valur
Top achievements
Rank 1
Garðar Valur asked on 02 Nov 2012, 04:18 PM
My nested template column is not appearing in my markup when page loads. I´m trying to load a grid with a template column within a DetailView of another parent-grid. I can see my data being passed and clearly the "Name" of the UnitPeriod appears but nothing within my template column, so it seems as the data is being passed into the grid. I´ve checked the source with firebug and that column always loads empty. Can any1 spot why?

<div>
@(Html.Telerik().Grid<RentableUnit>()
    .Name("RentableUnits")
    .Columns(columns =>
    {
        columns.Bound(e => e.UnitID).Hidden();
        columns.Bound(e => e.Name).Width(75);
    })
    .ClientEvents(events => events.OnRowDataBound("employees_onRowDataBound")
                            .OnDetailViewExpand("unit_onDetailViewExpand")
                            .OnDetailViewCollapse("unit_onDetailViewCollapse"))
    .DetailView(details => details.ClientTemplate(
        Html.Telerik().Grid<UnitPeriod>()
            .Name("UnitPeriod_<#= UnitID #>")
            .Columns(columns =>
                {
                    columns.Bound(o => o.Name);
                    columns.Template(@<text>
                     @foreach (Day day in item.Days)
                     {
                         if (!day.IsRentable)
                         {
                             <img src="../../Content/Images/Houses/icon_lokad.png"/>
                         }
                         else
                         {
                             <img src="../../Content/Images/Houses/icon_opid.png"/>
                         }
                     }
             </text>);
            })
            .ClientEvents(events => events.OnRowDataBound("orders_onRowDataBound"))
            .DataBinding(dataBinding => dataBinding.Ajax()
            .Select("SelectedUnitPeriod", "Home", new { unitId = "<#= UnitID #>" }))
            .ToHtmlString()
    ))
    .DataBinding(dataBinding => dataBinding.Ajax().Select("RentableUnits", "Home"))
    .Sortable()
    )
</div>
 
<script type="text/javascript">
    var derpinski = "";
    function expandFirstRow(grid, row) {
        if (grid.$rows().index(row) == 0) {
            grid.expandRow(row);
        }
    }
 
function loadTabGridContent(e) {
    var url = '/Home/TabGridContent/';
    $.ajax({
        type: 'GET',
        dataType: 'html',
        url: url,
        success: function (data) {
            alert('success');
            $('#TabGridContent').html(data);
        }
    });
}
 
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);
}
 
function unit_onDetailViewExpand(e) {
    var mstRow = e.masterRow;
    var unitNumber = mstRow.cells[1].innerHTML;
    derpinski = derpinski + unitNumber + ",";
}
 
function unit_onDetailViewCollapse(e) {
    var mstRow = e.masterRow;
    var unitNumber = mstRow.cells[1].innerHTML;
    derpinski = derpinski.replace(unitNumber + ",", "");
}
Tags
Grid
Asked by
Garðar Valur
Top achievements
Rank 1
Share this question
or