I have a MVC page with a kendo grid. The data is already available so I am using server binding. What I am trying to accomplish is in presenting all of the data needed in the DetailTemplate option. I am trying with no success to display multiple layers of grids in the DetailTemplate.
I first have a grid on the page showing the data for a ServiceLine. This grid has a DetailTemplate with a tabstrip. The first tab strip shows service line data and the second tab strip shows data for other insurance (which is a grid). This displays correctly for the user when selecting the detail icon. Both the service line data and the other insurance grid is displayed.
The grid showing other insurance also has a Detail Template showing a grid of adjustments. This is where the problems resides. The other insurance grid does show the icon for the detail but the third grid for adjustments does not show when the user clicks on the detail icon. I am not sure what is incorrect in defining the DetailTemplate for the adjustments grid.
If you have any ideas or samples of server binding grid details for multiple layers deep would be helpful. If not I will have to look at other methods (ClientTemplates?) to solve this issue.
Here is the MVC cshtml page:
@inherits BaseRazorView<List<DentalServiceLineModel>>
@{ Html.Kendo().Grid(Model)
.Name("DentalServiceLinesGrid")
.HtmlAttributes(new { @class = "editor-grid" })
.Columns(columns =>
{
columns.Bound(e => e.LineNumber).Title("#").Width("8%");
columns.Bound(e => e.FromDate).Title("From Date").Width("8%");
columns.Bound(e => e.ProcedureCode.FormattedText).Title("Procedure Code");
columns.Bound(e => e.ToothNumber.FormattedText).Title("Tooth Number");
columns.Bound(e => e.Units).Title("Units").Width("10%");
columns.Bound(e => e.ChargeAmount).Title("ChargeAmount").Width("15%");
})
.Scrollable()
.DetailTemplate(e =>
{
Html.Kendo().TabStrip()
.Name("slTabStrip_" + e.LineNumber)
.SelectedIndex(0)
.Items(items =>
{
items.Add().Text("Service Line Details").Content(@<text>
@RenderServiceLineInformation(e)
</text>);
items.Add().Text("Other Insurance").Content(@<text>
@RenderServiceLineOtherInsurances(e.LineNumber, e.OtherInsurances)
</text>);
})
.Render();
})
.DataSource(dataSource => dataSource.Server())
.NoRecords("No Data")
.Render();
}
@helper RenderServiceLineInformation(DentalServiceLineModel dentalServiceLine)
{
<div id="serviceLine_@dentalServiceLine.LineNumber">
<div class="row">
<div class="col-md-5 editor-col">
<div class="editor-label">Procedure Code</div>
<div class='editor-field font-weight-bold editor-clear'>@dentalServiceLine.ProcedureCode.FormattedText</div>
</div>
<div class="col-md-5 editor-col">
<div class="editor-label">Additional Procedure Code Description</div>
<div class='editor-field font-weight-bold editor-clear'>@dentalServiceLine.ProcedureCodeAdditionalInfo</div>
</div>
</div>
</div>
}
@helper RenderServiceLineOtherInsurances(int serviceLineNumber, List<OtherInsuranceServiceModel> serviceLineOtherInsurances)
{
@(Html.Kendo().Grid(serviceLineOtherInsurances)
.Name("DentalServiceLinesGrid_OtherInsurances_" + serviceLineNumber)
.Columns(columns =>
{
columns.Bound(o => o.LineNumber).Title("#").Width("3%");
columns.Bound(e => e.Carrier.Name).Title("Other Carrier");
columns.Bound(e => e.PaidAmount).Title("Paid Amount").Width("15%");
columns.Bound(e => e.PaidDate).Title("Paid Date").Width("10%");
columns.Bound(e => e.Units).Title("Units").Width("10%");
columns.Bound(e => e.PatientLiabilityAmount).Title("Patient Liability").Width("20%");
})
.Scrollable()
.DetailTemplate(soi =>
{
Html.Kendo().Grid(soi.Adjustments)
.Name("DentalServiceLinesGrid_OtherInsurances_Adjustments_" + soi.Adjustments)
.Columns(columns =>
{
columns.Bound(c => c.LineNumber).Title("#").Width("3%");
columns.Bound(c => c.GroupCode.Name).Title("Group Code");
columns.Bound(c => c.ReasonCode.Name).Title("ReasonCode");
columns.Bound(c => c.Amount).Title("Amount").Width("14%");
columns.Bound(c => c.Units).Title("Units").Width("14%");
})
.Scrollable()
.NoRecords("No Data");
})
.Scrollable()
.NoRecords("No Data")
)
}