or
$(tree).kendoTreeView({
dataSource:
new
kendo.data.HierarchicalDataSource({
transport: {
read: {
url: groups_api_url,
dataType:
"jsonp"
}
},
schema: {
model: {
id:
"key"
,
hasChildren:
"hasChildren"
}
}
}),
checkboxes: {
checkChildren:
false
},
dataTextField:
"title"
});
function updateGrid() {
if ( $("#grid").data("kendoGrid") != undefined ) {
$("#grid").empty();
}
var lob = $("#lob").data("kendoComboBox").value();
var queryurl = "./grid_projectselections.php?delob=" + escape(lob);
var updateurl = "./grid_projectselections.php?delob=" + escape(lob);
var element = $("#grid").kendoGrid({
dataSource: {
pageSize: 200,
type: "json",
batch: true ,
serverSorting: false,
transport: {
read: {
url: queryurl,
dataType: "json",
cache: false,
data: {
q: lob
}
},
update: {
url: updateurl,
dataType: "json"
},
parameterMap: function(options, operation) {
if (operation !== "read" && options.models) {
return {models: kendo.stringify(options.models)};
}
}
},
schema: {
data: "data",
total: "total",
model: {
fields: {
ProjectID: { editable: true },
HR_LEVEL_5: { editable: false },
HR_LEVEL_6: { editable: false },
HR_LEVEL_7: { editable: false },
HR_LEVEL_8: { editable: false },
HR_LEVEL_9: { editable: false },
ExecDescr: { editable: false },
OrgDescr: { editable: false },
GroupDescr: { editable: false },
RegionDescr: { editable: false },
SectionDescr: { editable: false }
}
}
}
},
selectable: true,
filterable: true,
resizable: true,
editable: true,
groupable: false,
pageable: {
numeric: true,
refresh: true,
previousNext: true,
input: true,
info: true
},
columns: [
{ field: "ProjectID", editor: ProjectDropDownEditor, values: projectDS },
"HR_LEVEL_5" ,
"HR_LEVEL_6" ,
"HR_LEVEL_7" ,
"HR_LEVEL_8" ,
"HR_LEVEL_9" ,
"ExecDescr" ,
"OrgDescr" ,
"GroupDescr" ,
"RegionDescr" ,
"SectionDescr"
]
});
}
function ProjectDropDownEditor(container, options) {
$('<
input
required
data-text-field
=
"ProjectName"
data-value-field
=
"ProjectID"
data-bind
=
"value:' + options.field + '"
/>')
.appendTo(container)
.kendoDropDownList({
autoBind: false,
dataSource: {
type: "json",
transport: {
read: { url: "./grid_projectsdropdown.php"},
}
}
});
}
$("#lob").width(360).kendoComboBox({
placeholder: "Select LOB...",
dataTextField: "LineOfBusiness",
dataValueField: "LineOfBusiness",
width: 360,
dataSource: {
contentType: "application/json; charset=utf-8",
serverFiltering: true,
transport: { read: "./ajax/lobs.php" },
schema: { data: "data", total: "total" }
},
change: function() {
var value = this.value();
if (value) {
if (value == '') {
return;
}
updateGrid();
} else {
}
}
});
var projectDS = new kendo.data.DataSource({
transport: {
read: { url: "./grid_projectsdropdown.php"},
dataType: "json"
},
schema: { data: "data", total: "total" }
});
[Table(
"Movies"
)]
public
class
Movie
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public
int
MovieId {
get
;
set
; }
public
string
Name {
get
;
set
; }
public
List<Actor> Actors {
get
;
set
; }
}
[Table(
"Actor"
)]
public
class
Actor
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public
int
ActorId {
get
;
set
; }
public
string
Name {
get
;
set
; }
[ScriptIgnore]
public
List<Movie> Movies {
get
;
set
; }
}
@(Html.Kendo().Grid<
KendoUi.ViewModels.MovieViewModel
>()
.Name("Grid")
.Columns(columns =>
{
columns.Bound(p => p.MovieId);
columns.Bound(p => p.Name);
columns.ForeignKey(p => p.Actors, (System.Collections.IEnumerable)ViewBag.Actors, "ActorId", "Name");
columns.Command(command => { command.Edit(); command.Destroy(); }).Width(180);
})
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.InLine))
.Pageable()
.Sortable()
.Scrollable()
.DataSource(dataSource => dataSource
.Ajax()
.Events(events => events.Error("error_handler"))
.Model(model =>
{
model.Id(p => p.MovieId);
model.Field(p => p.MovieId).Editable(false);
})
.Create(update => update.Action("EditingInline_Create", "Movie"))
.Read(read => read.Action("EditingInline_Read", "Movie"))
.Update(update => update.Action("EditingInline_Update", "Movie"))
.Destroy(update => update.Action("EditingInline_Destroy", "Movie"))
)
)
public
class
MovieController : Controller
{
private
readonly
KendoContext context;
public
MovieController()
{
context =
new
KendoContext();
}
public
ActionResult Index()
{
ViewBag.Actors = context.Actors;
return
View();
}
public
ActionResult EditingInline_Read([DataSourceRequest] DataSourceRequest request)
{
return
Json(context.Movies.Include(
"Actors"
).ToDataSourceResult(request));
}
[AcceptVerbs(HttpVerbs.Post)]
public
ActionResult EditingInline_Create([DataSourceRequest] DataSourceRequest request, MovieViewModel movie)
{
if
(movie !=
null
&& ModelState.IsValid)
{
var toAdd =
new
Movie() {Name = movie.Name};
context.Entry(toAdd).State = EntityState.Added;
context.SaveChanges();
}
return
Json(
new
[] { movie }.ToDataSourceResult(request, ModelState));
}
[AcceptVerbs(HttpVerbs.Post)]
public
ActionResult EditingInline_Update([DataSourceRequest] DataSourceRequest request, MovieViewModel movie)
{
if
(movie !=
null
&& ModelState.IsValid)
{
var target = context.Movies.Single(x => x.MovieId == movie.MovieId);
if
(target !=
null
)
{
target.Name = movie.Name;
context.Entry(target).State = EntityState.Modified;
context.SaveChanges();
}
}
return
Json(ModelState.ToDataSourceResult());
}
[AcceptVerbs(HttpVerbs.Post)]
public
ActionResult EditingInline_Destroy([DataSourceRequest] DataSourceRequest request, MovieViewModel movie)
{
if
(movie !=
null
)
{
var target = context.Movies.Single(x => x.MovieId == movie.MovieId);
context.Entry(target).State = EntityState.Deleted;
context.SaveChanges();
}
return
Json(ModelState.ToDataSourceResult());
}
}
public
class
MovieViewModel
{
public
int
MovieId {
get
;
set
; }
public
string
Name {
get
;
set
; }
public
List<Actor> Actors {
get
;
set
; }
}