Hello,
I have been through all samples but non match the Scenario i have. My Kendo grid is inside a vertical splitter and the columns are dynamic. So in datagrid read Event the Controller picks a variable select stetement and then the columns and column Header names are stored in viewbag and in view the columns get bound to viewbag and datab\able returned from controlller method. One column should be editable as Dropdown and rest all not editable.
Attached is my view code and this is the column i am trying to use adropdown editortemplate and when i add this editable line i get crash
.Editable(editable => editable.Mode(GridEditMode.InCell))
Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.
if (ViewBag.ObjAdressHeader[k, 0] == "Obj_AddressType"){
columns.Bound(ViewBag.ObjAdressHeader[k, 0]).Title(ViewBag.ObjAdressHeader[k, 1]).EditorTemplateName("AvailableValues").Width(70);
// columns.ForeignKey("Obj_AddressType", (System.Collections.IEnumerable)ViewBag.AddressTypes, "Value", "Text").EditorTemplateName("AvailableValues").Title("Typ").Width(70);
}
My editortemplatelooks like
@(Html.Kendo().DropDownList().Name("Obj_AddressType")
.DataTextField("Text")
.DataValueField("Value")
.BindTo(new List<SelectListItem>
{
new SelectListItem {Text = "Kunde", Value = "0"},
new SelectListItem {Text = "Kunde", Value = "1"},
new SelectListItem {Text = "Rechnungsadresse", Value = "2"}
}))
and view code
rightverticalPanes.Add()
.HtmlAttributes(new { id = "bottom-pane" })
.Resizable(true)
.Collapsible(false)
.Content(@<text>
@(Html.Kendo().Grid(Model)
.Name("Grid_ObjAdress")
.DataSource(dataSource1 => dataSource1
.Ajax()
.PageSize(100)
.Model(model1 =>
{
if (Model != null)
{
foreach (System.Data.DataColumn ocolumn in Model.Columns)
{
if( ocolumn.ColumnName == "Obj_AddressType"){
model1.Field(ocolumn.ColumnName, ocolumn.DataType).Editable(true);
}else{
model1.Field(ocolumn.ColumnName, ocolumn.DataType).Editable(false);
}
}
}
})
.Read(read => read.Action("ObjectAdress_Read", "ObjektActivity"))
.ServerOperation(false)
)
.Resizable(resize => resize.Columns(true))
.Columns(columns =>
{
if (ViewBag.ObjAdressHeader != null)
{
for (int k = 0; k < ViewBag.ObjAdressHeader.GetLength(0); k++)
{
if (ViewBag.AdrVisibleCols[k] == "0")
{
columns.Bound(ViewBag.ObjAdressHeader[k, 0]).Title(ViewBag.ObjAdressHeader[k, 1]).Visible(false);
}
else
{
if (ViewBag.ObjAdressHeader[k, 0] == "Obj_AddressType"){
columns.Bound(ViewBag.ObjAdressHeader[k, 0]).Title(ViewBag.ObjAdressHeader[k, 1]).EditorTemplateName("AvailableValues").Width(70);
// columns.ForeignKey("Obj_AddressType", (System.Collections.IEnumerable)ViewBag.AddressTypes, "Value", "Text").EditorTemplateName("AvailableValues").Title("Typ").Width(70);
}
else
{
columns.Bound(ViewBag.ObjAdressHeader[k, 0]).Title(ViewBag.ObjAdressHeader[k, 1]).Width(120);
}
}
}
}
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Selectable(selectable => selectable
.Mode(GridSelectionMode.Multiple))
.Sortable()
.Scrollable()
.Filterable(filterable => filterable
.Extra(false)
.Operators(operators => operators
.ForString(str => str.Clear()
.StartsWith("Starts with")
.IsEqualTo("Is equal to")
.IsNotEqualTo("Is not equal to")
))
)
.Groupable()
.Reorderable(r => r.Columns(true))
.Resizable(r => r.Columns(true))
)
Thanks
Anamika