Syncfusion MVC Datagrid - как отобразить кнопку в строке - PullRequest
0 голосов
/ 10 января 2020

У меня есть Syncfusion MVC Datagrid, и мне нужно отобразить пользовательскую кнопку в каждом ряду, чтобы предпринять какое-то действие. Столбец Сведения о сотруднике вырезан и вставлен с их веб-сайта: https://help.syncfusion.com/aspnetmvc/grid/columns?cs-save-lang=1&cs-lang=razor

VS ошибка:

Невозможно преобразовать лямбда-выражение в введите 'object', потому что это не тип делегата

Какой правильный синтаксис для отображения кнопки?

Кроме того, мне потребуется правильный код jscript / controller для обратного вызова контроллер и получить обратно идентификатор или выбранный элемент.

@Html.EJS().Grid("DataGrid").DataSource(ds => ds.Json(ViewBag.datasource).UpdateUrl("/Management/Update").InsertUrl("/Management/Insert").RemoveUrl("/Management/Remove").Adaptor("RemoteSaveAdaptor")).AllowTextWrap().Columns(col =>
{
col.Field("Id").IsPrimaryKey(true).Visible(false).Add();
col.Field("ResourceGroup").HeaderText("Source VM Resource Group").Add();
col.Field("VMName").HeaderText("Source VM Name").Add();
col.Field("ImageDate").HeaderText("Image Capture Start Date").Width(150).Format("yyyy-MMM-dd hh:mm").HeaderTextAlign(Syncfusion.EJ2.Grids.TextAlign.Center).EditType("datetimepickeredit").Edit(new { @params = new { min = System.DateTime.UtcNow, showclearbutton = true } }).Add();
col.Field("ImageRecurrance").HeaderText("Image Recurrence (days)").EditType("numericedit").Edit(new { @params = new { min = 0, step = 10, decimals = 0, strictmode = true } }).Width(100).Add();
col.Field("ImageVersion").HeaderText("Image Version").Add();
col.HeaderText("Employee Details").Commands(command =>
    {
    command.Type("detail")
        .ButtonOptions(new Syncfusion.JavaScript.Models.ButtonProperties()
        {
            Text = "Details",
            Width = "100px",
            Click = "onClick"
        }).Add();
})                
.TextAlign(TextAlign.Center)
.Width(150)
.Add();
}).ActionFailure("OnActionFailure").AllowTextWrap(true).TextWrapSettings(text => { text.WrapMode(Syncfusion.EJ2.Grids.WrapMode.Header); }).AllowPaging().FilterSettings(filter => { filter.Type(Syncfusion.EJ2.Grids.FilterType.Menu); }).EditSettings(edit => { edit.AllowAdding(true).AllowEditing(true).AllowDeleting(true).ShowDeleteConfirmDialog(true).Mode(Syncfusion.EJ2.Grids.EditMode.Dialog); }).Toolbar(toolbarItems).TextWrapSettings(text => { text.WrapMode(Syncfusion.EJ2.Grids.WrapMode.Header); }).Render()

1 Ответ

0 голосов
/ 16 января 2020

Кнопка проста со следующим шаблоном столбца:

  • Управление = Контроллер
  • Выбор = Действие
  • $ {Id} = значение для передачи QueryString

<a href='/Management/Select?Id=${Id}'>
    <button class='e-control e-btn e-lib' id='button' type='button'>Related</button>
</a>

Определение сетки

@{int buttonWidth = 160; } 

@Html.EJS().Grid("DataGrid").DataSource(ds => ds.Json(ViewBag.datasource).UpdateUrl("/Management/Update").InsertUrl("/Management/Insert").RemoveUrl("/Management/Remove").Adaptor("RemoteSaveAdaptor")).AllowTextWrap().Columns(col =>
{

    col.Field("Id").IsPrimaryKey(true).Visible(false).Add();
    col.Field("RG").HeaderText("RG").Width(@colWidth).Add();
    col.Template("<a href='/Management/Select?Id=${Id}'><button class='e-control e-btn e-lib' id='button' type='button'>Related</button></a>").AllowEditing(false).Width(@buttonWidth).Add();

}).ActionFailure("OnActionFailure").AllowTextWrap(true).TextWrapSettings(text => { text.WrapMode(Syncfusion.EJ2.Grids.WrapMode.Header); }).AllowPaging().FilterSettings(filter => { filter.Type(Syncfusion.EJ2.Grids.FilterType.Menu); }).EditSettings(edit => { edit.AllowAdding(true).AllowEditing(true).AllowDeleting(true).ShowDeleteConfirmDialog(true).Mode(Syncfusion.EJ2.Grids.EditMode.Dialog); }).Toolbar(toolbarItems).TextWrapSettings(text => { text.WrapMode(Syncfusion.EJ2.Grids.WrapMode.Header); }).Render()

Контроллер

    public class ManagementController : Controller
    {
...
        public ActionResult Select(object newItem)
        {
              var id = System.Convert.ToInt32(this.Request.QueryString["Id"]);
...