or
public
JsonResult JsonIndex()
{
var menus = _db.GetMenus( 0, 1, 1, 0 );
var allMenus = from m
in
menus
where m.MenuId == 1
select
new
{
Name = m.MenuName,
ImageUrl = m.MenuImageUrl,
NavUrl = m.MenuNavUrl,
hasChildren =
true
,
children = from m2
in
menus
where m2.ParentMenuId == m.MenuId
select
new
{
Name = m2.MenuName,
ImageUrl = m2.MenuImageUrl,
NavUrl = m2.MenuNavUrl,
hasChildren =
false
,
}
};
JsonResult json = Json( allMenus, JsonRequestBehavior.AllowGet );
return
( json );
}
<script>
$(document).ready(
function
() {
function
populateTreeView() {
var
remoteDataSource =
new
kendo.data.HierarchicalDataSource({
type:
"json"
,
transport: {
read:
"Home/JsonIndex"
},
schema: {
model: {
text:
"Name"
,
ImageUrl:
"ImageUrl"
,
expanded:
true
,
children:
"children"
,
hasChildren:
"hasChildren"
,
NavUrl:
"NavUrl"
}
}
});
$(
"#tv"
).kendoTreeView({
id:
"tree123"
,
Name:
"tree123"
,
dataSource: remoteDataSource,
dataTextField:
"Name"
,
dataImageUrlField:
"ImageUrl"
,
select: onTreeViewSelect
});
}
$(document).ready(
function
() {
populateTreeView();
});
});
</script>
public
class
HomeController : Controller
{
//
// GET: /Home/
[HttpGet]
public
ActionResult Index()
{
return
View();
}
// Carrier Actions
//
// POST: /ReadCarriers/
[HttpPost]
public
ActionResult CarrierRead([DataSourceRequest] DataSourceRequest request)
{
try
{
var facade =
new
CarrierFacade();
IList<Carrier> carriers = facade.GetAllCarriers();
return
Json(carriers.ToDataSourceResult(request));
}
catch
(DbException ex)
{
ViewBag.ErrorMessage = ex.Message;
return
View(
"Error"
);
}
}
// Comment Actions
//
// POST: /CommentRead/
[HttpPost]
public
ActionResult CommentRead([DataSourceRequest] DataSourceRequest request,
int
carrierId)
{
try
{
var facade =
new
CarrierFacade();
IList<CarrierComment> comments = facade.GetAllComments(carrierId);
return
Json(comments.ToDataSourceResult(request));
}
catch
(DbException ex)
{
ViewBag.ErrorMessage = ex.Message;
return
View(
"Error"
);
}
}
}
@using HappyHolidays.WebPortal.BusinessObjects
@{
ViewBag.Title = "Carrier Directory";
}
@(Html.Kendo().Grid<
Carrier
>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(p => p.Name).Groupable(false);
columns.Bound(p => p.Phone1).Groupable(false).Title("Primary Phone");
columns.Bound(p => p.Phone2).Groupable(false).Title("Secondary Phone");
columns.Bound(p => p.Fax).Groupable(false);
columns.Command(command =>
{
command.Edit();
command.Destroy();
});
})
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.PopUp))
.Groupable()
.Pageable()
.Sortable()
.Scrollable()
.Filterable()
.Selectable()
.Resizable(resize => resize.Columns(true))
.Reorderable(reorder => reorder.Columns(true))
.ClientDetailTemplateId("carrier-detail")
.DataSource(
dataSource => dataSource
.Ajax()
.PageSize(50)
.Model(model =>
{
model.Id(p => p.CarrierId);
model.Field(p => p.CarrierId).Editable(false);
})
.Create(update => update.Action("CarrierCreate", "Home"))
.Update(update => update.Action("CarrierUpdate", "Home"))
.Destroy(update => update.Action("CarrierDelete", "Home"))
.Read(read => read.Action("CarrierRead", "Home"))))
<
script
id
=
"carrier-detail"
type
=
"text/x-kendo-template"
>
@(Html.Kendo().Grid<
CarrierComment
>()
.Name("commentsGrid#=CarrierId#")
.Columns(columns =>
{
columns.Bound(o => o.Comment);
columns.Bound(o => o.AddedBy);
columns.Bound(o => o.TimeStamp);
})
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("CommentRead", "Home", new { carrierID = "#=CarrierId#" }))
)
.Pageable()
.Sortable()
.ToClientTemplate()
)
</
script
>
<!DOCTYPE html>
<
html
>
<
head
>
<
title
>@ViewBag.Title</
title
>
<
link
href
=
"@Url.Content("
~/Content/Site.css")"
rel
=
"stylesheet"
type
=
"text/css"
/>
<
link
href
=
"@Url.Content("
~/Content/kendo/2013.1.514/kendo.common.min.css")"
rel
=
"stylesheet"
type
=
"text/css"
/>
<
link
href
=
"@Url.Content("
~/Content/kendo/2013.1.514/kendo.dataviz.min.css")"
rel
=
"stylesheet"
type
=
"text/css"
/>
<
link
href
=
"@Url.Content("
~/Content/kendo/2013.1.514/kendo.metro.min.css")"
rel
=
"stylesheet"
type
=
"text/css"
/>
<
link
href
=
"@Url.Content("
~/Content/kendo/2013.1.514/kendo.dataviz.metro.min.css")"
rel
=
"stylesheet"
type
=
"text/css"
/>
<
script
src
=
"@Url.Content("
~/Scripts/kendo/2013.1.514/jquery.min.js")"> </
script
>
<
script
src
=
"@Url.Content("
~/Scripts/kendo/2013.1.514/kendo.all.min.js")"> </
script
>
<
script
src
=
"@Url.Content("
~/Scripts/kendo/2013.1.514/kendo.aspnetmvc.min.js")"> </
script
>
<
script
src
=
"@Url.Content("
~/Scripts/kendo.modernizr.custom.js")"> </
script
>
</
head
>
<
body
>
<
div
>
@RenderBody()
</
div
>
</
body
>
</
html
>
<
script
id
=
"shipmentDetail-template"
type
=
"text/x-kendo-template"
>
--- lots of template code removed for brevity ---
# var myVal; var cr = data.CustomerReference; for (var key in cr) { if (cr.hasOwnProperty(key)) { myVal = cr[key]; # #= myVal # , # } } #
</
script
>
$.ajax({
type:
'post'
,
data: kendo.stringify($(
"#Grid"
).data(
"kendoGrid"
).dataSource.view()),
dataType:
"json"
,
contentType:
"application/json; charset=utf-8"
,
url:
'@Url.Action("CreateExcelFile","Helper")'
,
success:
function
(response) {
},
error:
function
(request, status, errorThrown) {
}
});