Есть несколько способов сделать это. Этот способ, вероятно, дает вам наибольшую гибкость и является моим любимым:
columns.Template("<a class='btn' href='javascript:myJavascriptAjaxFunction(#=ID#)'>Edit</a>");
Если вы хотите использовать командный маршрут столбца, сначала вы должны будете сделать свою сетку редактируемой, затем вы получите использовать команду редактирования, а затем вы захотите создать событие, которое вызовет функцию Javascript, где вы можете написать свой код. Функция Javascript передает параметр, такой как «e», который затем можно использовать для доступа к информации, такой как информация о модели строки.
Существует 3 типа редактирования: пакетное, встроенное или всплывающее. Какой тип редактирования будет определять событие. Вот демонстрационная документация Kendo для хорошего примера: https://demos.telerik.com/aspnet-mvc/grid/editing-popup
А вот пример с всплывающим редактированием:
@(Html.Kendo().Grid<Note>().Name("grid")
.Groupable()
.Sortable()
.Scrollable()
.Editable(editable => editable.Mode(GridEditMode.PopUp))
.Events(e=>e.Edit("myJavascriptAjaxFunction"))
.ToolBar(x =>
{
x.Excel();
})
.Columns(columns =>
{
columns.Bound(p => p.NoteDate).Title("Note Date").Format("{0:dd/MM/yyyy}");
columns.Bound(p => p.Title).Title("Title");
columns.Bound(p => p.NoteText).Title("Note Detail");
columns.Bound(p => p.Amount).Title("Amount");
columns.Bound(p => p.DateCreated).Title("Created");
//something like this, but this just takes me to the page im already on
columns.Bound(p => p.ID).ClientTemplate(
"<a href='" +
Url.Action("Edit", "/Notes/Edit") +
"'/#= ID #'" +
">Edit</a>"
);
columns.Command(column => column.Edit());
})
.DataSource(ds => ds.Ajax()
.Read(r => r.Url("/Notes/Index?handler=Read").Data("forgeryToken"))
.Model(m => m.Id(id => id.ID))
.PageSize(10)
)
.Pageable()
)
Обновление: Снова несколькими способами вы можете go об этом, но один из способов - использовать вашу функцию Javascript для выполнения вызова ajax, который возвращает частичное представление, которое вы могли бы отобразить в модальном bootstrap.
Bootstrap Модальная документация: https://getbootstrap.com/docs/4.0/components/modal/
Убедитесь, что у вас есть bootstrap, включенный в ваш проект, и добавьте это к своему виду бритвы:
<div class="modal" tabindex="-1" role="dialog" id="myModal">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Modal title</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<p>Modal body text goes here.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary">Save changes</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
В вашем Javascript:
myJavascriptFunction(id){
$.ajax({
type: "GET", //make sure matches your controller http request
url: "/Notes/Edit/"+id
success: function (content) {
$('.modal-body').html(content);
$('#myModal').modal('toggle'); //to show the modal
},
error: function (req, status, error) {
alert(error);
}
});