|
<div id="ControlRegion">
@Html.EJS().Grid("DetailTemplate").DetailDataBound("detailDataBound")
.DataSource((IEnumerable<object>)ViewBag.dataSource)
.DetailTemplate("#detailtemplate").
Render()
</div>
<script type="text/x-template" id="detailtemplate">
<div>
<div class="custom-tab"></div>
// Detail content for the particular Grid record is rendered below
<table class="detailtable" width="100%">
.
.
</div>
</script> |
|
// Grid’s detailDataBound event handler
function detailDataBound(args) {
// Element for appending the Grid to be rendered inside Tab
var gridEle = document.createElement('div');
var data = @Html.Raw(Json.Encode(ViewBag.ChildDataSource));
// Data for the Grid
data = data.filter(function (item) {
return item['EmployeeID'] === args.data['EmployeeID'];
});
// Grid to be rendered inside Tab is initialized here
var detail = new ej.grids.Grid({
dataSource: data,
columns: [
{ field: 'OrderID', headerText: 'Order ID', width: 110 },
{ field: 'CustomerID', headerText: 'Customer Name', width: 140 }
]
});
// Render initialized Grid component
detail.appendTo(gridEle);
var tabObj = new ej.navigations.Tab({
items: [
{
header: { 'text': 'Detail' },
// Detail element rendered inside Grid’s detail template
content: args.detailElement.querySelector('.detailtable')
},
{
header: { 'text': 'Grid' },
// Grid element
content: gridEle
}
]
});
//Render initialized Tab component on the element rendered in Grid’s detail template
tabObj.appendTo(args.detailElement.querySelector('.custom-tab'));
} |
|
<style type="text/css" class="cssStyles">
.detailtable td {
font-size: 13px;
padding: 4px;
max-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
</style> |
|
// Grid’s detailDataBound event handler
function detailDataBound(args) {
// Element for appending the Grid to be rendered inside Tab
var gridEle = document.createElement('div');
// Ajax post is sent with Grid’s expanded row data
var ajax = new ej.base.Ajax({
url: 'Home/GetChildRecords',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(args.data),
successHandler: function (data) {
// Filtered data that is returned from the server
var filteredChildGridData = JSON.parse(data).result;
// Grid to be rendered inside Tab is initialized here
var detail = new ej.grids.Grid({
dataSource: filteredChildGridData,
columns: [
{ field: 'OrderID', headerText: 'Order ID', width: 110 },
{ field: 'CustomerID', headerText: 'Customer Name', width: 140 }
]
});
// Render initialized Grid component
detail.appendTo(gridEle);
.
.
//Render initialized Tab component on the element rendered in Grid’s detail template
tabObj.appendTo(args.detailElement.querySelector('.custom-tab'));
}
});
ajax.send();
} |