Hi,
I am trying to put a cascading dropdowns into my GridView and for first step, i want to create a basic editor template.
It is working while in edit mode, but in read-mode, i could not figure how i shoul read. This field is WlbLine property.
How can i get the WlbLine.LineNo in grid-Read-Mode.
Here is my view:
And my editor template WlbLine.cshtml
Finally my controller :
I am trying to put a cascading dropdowns into my GridView and for first step, i want to create a basic editor template.
It is working while in edit mode, but in read-mode, i could not figure how i shoul read. This field is WlbLine property.
How can i get the WlbLine.LineNo in grid-Read-Mode.
Here is my view:
@model IEnumerable<Umki2.Areas.Wlb.ViewModels.VmWlbWeldLogBook>
@(Html.Kendo().Grid(Model)
.Name(
"grid"
)
.DataSource(ds => ds
.Ajax()
.PageSize(20)
.Model(model =>
{
model.Id(a => a.Id);
model.Field(a => a.Id).Editable(
false
);
model.Field(a => a.PID).Editable(
false
);
})
.Create(create => create.Action(
"Grid_Create"
,
"WlbWeldLogBook"
))
.Read(read => read.Action(
"Grid_Read"
,
"WlbWeldLogBook"
))
.Update(update => update.Action(
"Grid_Update"
,
"WlbWeldLogBook"
))
.Destroy(destroy => destroy.Action(
"Grid_Destroy"
,
"WlbWeldLogBook"
))
)
.Columns(p =>
{
p.Command(commands =>
{
commands.Edit();
commands.Destroy();
}).Title(
""
).Width(180).Locked();
p.Bound(c => c.WlbLine).Width(160);
p.ForeignKey(c => c.WlbSpoolId, (System.Collections.IEnumerable)ViewData[
"WlbSpoolId"
],
"Id"
,
"SpoolNo"
).Width(110).Locked(
true
).Lockable(
false
);
p.Bound(c => c.PID).Width(200);
p.Bound(c => c.JointNo).Width(110).Locked(
true
).Lockable(
false
);
p.Bound(c => c.WeldingProcess).Width(200);
p.Bound(c => c.WlbJointLocation).Width(200);
p.Bound(c => c.WlbJointType).Width(200);
p.ForeignKey(c => c.WrhIdentity1Id, (System.Collections.IEnumerable)ViewData[
"WrhIdentityList"
],
"Id"
,
"IdentityNo"
).Width(110);
p.ForeignKey(c => c.WrhIdentity2Id, (System.Collections.IEnumerable)ViewData[
"WrhIdentityList"
],
"Id"
,
"IdentityNo"
).Width(110);
})
.ToolBar(toolbar =>
{
toolbar.Create();
toolbar.Excel();
})
.Editable(editable => editable.Mode(GridEditMode.InLine))
.Pageable()
.Sortable()
.Groupable()
.Filterable(ftb => ftb.Mode(GridFilterMode.Menu))
.Resizable(resizable => resizable.Columns(
true
))
.Scrollable(scrollable => scrollable.Height(430))
.Reorderable(reorderable => reorderable.Columns(
true
))
.ColumnMenu()
.Excel(excel => excel
.FileName(
"LineList_"
+ System.DateTime.Now +
".xlsx"
)
.Filterable(
true
)
.ProxyURL(Url.Action(
"Excel_Export_Save"
,
"Grid"
))
)
)
And my editor template WlbLine.cshtml
@model Umki2.Areas.Wlb.Models.WlbLine
@(Html.Kendo().DropDownListFor(m => m)
.AutoBind(
false
)
.OptionLabel(
"Select Line..."
)
.DataTextField(
"LineNo"
)
.DataValueField(
"Id"
)
.DataSource(dataSource =>
{
dataSource.Read(read => read.Action(
"GetLines"
,
"WlbWeldLogBook"
,
new
{ area =
"Wlb"
}))
.ServerFiltering(
true
);
})
)
@Html.ValidationMessageFor(m => m)
Finally my controller :
public
JsonResult GetLines()
{
return
Json(
db.WlbLine.Select(x =>
new
{
Id = x.Id,
LineNo = x.LineNo
}), JsonRequestBehavior.AllowGet);
}
public
ActionResult Index()
{
ViewBag.WlbSpoolId = db.WlbSpool.ToList();
ViewBag.WrhIdentityList = db.WrhIdentityList.ToList();
return
View();
}
public
ActionResult Grid_Read([DataSourceRequest]DataSourceRequest request)
{
IQueryable<WlbJoint> WlbJoint = db.WlbJoint;
var model = from o
in
db.WlbJoint
select
new
VmWlbWeldLogBook
{
Id = o.Id,
JointNo = o.JointNo,
WeldingProcess = o.WeldingProcess,
WlbJointType = o.WlbJointType,
WlbJointLocation = o.WlbJointLocation,
WlbSpoolId = o.WlbSpoolId,
WrhIdentity1Id = o.WrhIdentity1Id,
WrhIdentity2Id = o.WrhIdentity2Id,
WlbLineId = o.WlbSpool.WlbIsometric.WlbLineId,
PID = o.WlbSpool.WlbIsometric.WlbLine.PID
};
DataSourceResult result = model.ToDataSourceResult(request);
return
Json(result);
}