Thank you for your reply, Daniel! I am using client template for that column.
Grid code -
@(Html.Kendo().Grid<
BIOTA.ViewModel.FieldDetailsViewModel
>()
.Name("HeaderGrid")
.AutoBind(false)
.Selectable( sel => sel.Mode(GridSelectionMode.Single))
.Columns(columns =>
{
.
.
.
columns.Bound(e => e.DISPLAY_ORDER).Width("13%").Title("Display Order").EditorTemplateName("Short");
columns.Bound(e => e.TAB_ORDER).Width("12%").Title("Tab Order").EditorTemplateName("Short");
columns.Bound(e => e.DEFAULT_VALUE).Width("24%").Title("Default Value").ClientTemplate("#=DefaultDropDownEditor(SOURCE_DATA, DEFAULT_VALUE,'HEADER',CONTROL_TYPE)#");
columns.Bound(e => e.TEMPLATE_ID).Width("0px").Title("").Hidden();
columns.Bound(e => e.TEMPLATE_TYPE_ID).Width("0px").Title("").Hidden();
})
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.PageSize(15)
.Model(modelheader =>
{
modelheader.Id(p => p.APP_CONTROLS_ID_PK);
modelheader.Field(p => p.SELECTED).Editable(true);
modelheader.Field(p => p.FIELD_NAME).Editable(false);
modelheader.Field(p => p.DISPLAY_NAME).Editable(false);
modelheader.Field(p => p.DISPLAY_ORDER).Editable(true);
modelheader.Field(p => p.TAB_ORDER).Editable(true);
modelheader.Field(p => p.DEFAULT_VALUE).Editable(false);
modelheader.Field(p => p.TEMPLATE_ID).Editable(false);
modelheader.Field(p => p.TEMPLATE_TYPE_ID).Editable(false);
})
.Read(read => read.Action(".....", ".......").Data("GetHeaderTemplateType").Type(HttpVerbs.Post))
.Update("Editing_Update", "Project")
.Events(events => events.Error("error_handler"))
.ServerOperation(false)
)
.ToolBar(toolbar => { toolbar.Save(); })
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Pageable()
.Navigatable()
.Sortable()
.Scrollable()
.HtmlAttributes(new { style = "height:500px;" })
.Events(evnt => evnt.SaveChanges("onGridSave"))
)
I dont have validator code. I am passing validation attributes in client template and attching to html of textbox.
You are correct I am not checking if the input is valid or not. Can you tell me how to do it? I am attching code where I am assigning textbox value to underlying model property.
function SensorTextBoxChanged(e, templateType)
{
var grid;
var cellHeader;
var cellIndex;
var gridName = "";
cellHeader = $("#HeaderGrid").find("th[data-title='Default Value']");
cellIndex = cellHeader[0].cellIndex;
grid = $('#HeaderGrid').data("kendoGrid");
gridName = "HeaderGrid";
.
.
.
var item = grid.dataItem(grid.select());
//item.sel1();
if (item != null) {
if (item.DEFAULT_VALUE != e.value)
{
var row = grid.tbody.find("tr[data-uid='" + item.uid + "']");
var cell = row.find("td:eq(" + cellIndex + ")");
if (cell.error()[0].innerText == null || cell.error()[0].innerText == "") {
if (!cell.hasClass("k-dirty-cell")) {
cell.prepend("<
span
class
=
'k-dirty'
></
span
>");
}
item.DEFAULT_VALUE = e.value;
item.dirty = true;
}
else {
item.dirty = false;
if (!cell.hasClass("k-dirty-cell")) {
cell.prepend("<
span
class
=
'k-dirty'
></
span
>");
}
}
}
}
}