Я так и не понял, как реализовать кнопку «Команда» вне столбца команд. Я смог использовать новую настраиваемую команду, доступную в выпуске Q3 2011 года (в настоящее время бета-версию), для реализации своей настраиваемой кнопки редактирования в качестве настраиваемой команды.
Эта пользовательская кнопка редактирования запускает всплывающее окно, содержащее форму редактирования для данных в строке сетки. Я не смог заставить работать встроенное редактирование всплывающих окон. Вот код ниже.
Определение кнопки пользовательского редактирования:
commands.Custom("EditReportComment")
.Text("Edit")
.Ajax(true)
.Action("EditReportComment","DebtRisk")
.HtmlAttributes(new { @class="edit-report-comment" })
.DataRouteValues(route => route.Add(o => o.Id).RouteKey("id"))
;
Клиентское событие, необходимое для присоединения события, связанного со строкой, для кнопки редактирования:
.ClientEvents(events => events.OnRowDataBound("ReportCommentGrid_onRowDataBound"))
Связка по нажатию: (извлекает href из определения кнопки для URL окна)
function ReportCommentGrid_onRowDataBound(e)
{
var editLink = $(e.row).find('.edit-report-comment')
editLink.click(function (ev)
{
ev.stopPropagation();
ev.stopImmediatePropagation();
ev.preventDefault();
LaunchCommentEditWindow(editLink.attr("href"));
return false;
});
}
Средство запуска всплывающих окон:
function LaunchCommentEditWindow(editUrl)
{
var newWindow = $("<div id='EditReportComment'></div>").tWindow(
{
title: 'Edit Comment',
contentUrl: editUrl,
modal: true,
resizeable: false,
scrollable: false,
width: 550,
height: 200,
onClose: function (e){ e.preventDefault(); newWindow.data('tWindow').destroy(); }
});
newWindow.data("tWindow").center().open();
return false;
}