Ich habe eine MVC Kendo UI Grid alsDeaktivieren bearbeiten auf Telerick MVC Grid
@(Html.Kendo().Grid<SomeViewModel>()
.Name("someGrid")
.ToolBar(toolbar =>
{
toolbar.Create().Text("Add Entry");
toolbar.Save();
})
.Columns(columns =>
{
columns.Bound(p => p.Name).ClientTemplate(@"<input type='radio' name='SomeradioName'> #= Name # </input>");
columns.Bound(p => p.DateCreated).Format("{0:dddd dd MMMM yyyy}");
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Events(e => e.DataBound("onDataBound"))
.Events(e => e.Edit("onDataEdit"))
.Selectable(selectable => selectable.Enabled(true).Mode(GridSelectionMode.Single).Type(GridSelectionType.Row))
.Scrollable()
.Filterable()
.HtmlAttributes(new {style = "height:200px;"})
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false)
.Batch(false)
.Events(events => events.Error("onError"))
.Model(model =>
{
model.Id(s => s.Id);
model.Field(s => s.Name).Editable(true);
model.Field(s => s.DateCreated).Editable(false);
})
.Read(read => read.Action(...))
.Create(create => create.Action(...))
.Update(create => create.Action(...))))
folgt ich in der Zelle Bearbeitung für bereits hinzugefügt Einträge deaktivieren möchten.
Also, ein paar Dinge habe ich versucht,
Ansatz # 1:
<script>
function onDataEdit(e) {
if (!e.model.isNew()) {
var grid = this;
grid.closeCell();
}
}
</script>
Anscheinend bricht das Optionsfeld Auswahlereignis (.change Ereignis), die in OnDataBound verdrahtet werden. In OnDataEdit Ereignisse do
$("#Name").attr("readonly", true);
Dies auch in Ordnung ist, aber wieder Ereignis ändern wird nicht gefeuert mehr auf Radio-Button klicken: closeCell
Schrauben Sie es auf und Ereignis mehr ändert nicht bekommt
Ansatz # 2 bis gefeuert bis der Befehl Cancel
changes geklickt wird.
Ansatz # 3
Es scheint anders zu sein, zu tun, um in diesem Link hier als gegeben zu deaktivieren aktivieren: http://docs.telerik.com/kendo-ui/api/javascript/ui/grid#events-edit
if (!e.model.isNew()) {
// Disable the editor of the "id" column when editing data items
var numeric = e.container.find("input[name=id]").data("kendoNumericTextBox");
numeric.enable(false);
}
Wie mache ich etwas ähnliches in meinem Fall? data
konnte nicht aufgelöst werden.
Andere Möglichkeiten?
aktualisieren
Ansatz # 4
e.container.find("input[name=Name]").each(function() { $(this).attr("disabled", "disabled") });
var grid = this;
grid.cancelChanges();
Dieser bricht nicht das Änderungsereignis. Die Erfahrung ist jedoch nicht so toll. Wenn der Benutzer beim Hinzufügen eines neuen Datensatzes eine andere Zeile drückt, werden die Änderungen abgebrochen. Sie müssen neue Datensatz hinzufügen und entweder Hit speichern oder auf eine beliebige Stelle außer Startreihen
Wenn Sie die Bearbeitungsfunktionalität deaktivieren möchten, warum verwenden Sie dann die Bearbeitung in der Zelle? Die Bearbeitung in der Zelle ist nur beim Bearbeiten sinnvoll, nicht beim Hinzufügen. Es unterscheidet sich nicht sehr von der Inline-Bearbeitung beim Hinzufügen. – ataravati
So hat Telerik dieses Durcheinander geschaffen, glaube ich. Im Idealfall müssen Create und Edit zwei separate Operationen sein. Auf diese Weise hätte jeder nur die Create-Funktionalität ohne Edit (oder Update) unterstützen können. Aber das ist nicht der Fall. Wenn ich nur Create-Funktionalität unterstützen möchte, ohne dass Edit hinzugefügt wird, wird ein Fehler ausgegeben. Versuch es. Aus diesem Grund sehen wir Fragen wie diese zum Deaktivieren der Gitterbearbeitung. –