Javascript DevExtreme datagrid在单击按钮时返回单元格值

Javascript DevExtreme datagrid在单击按钮时返回单元格值,javascript,datagrid,devexpress,devextreme,Javascript,Datagrid,Devexpress,Devextreme,在我的项目中,我在razor页面中设置了一个简单的datagrid,如下所示: <div id="Datagrid" dx-item-alias="itemData"> @(Html.DevExtreme().DataGrid<Batch>().ID("gridContainer") .Columns(columns => { columns.Add().CellTemplate( @<text>

在我的项目中,我在razor页面中设置了一个简单的datagrid,如下所示:

<div id="Datagrid" dx-item-alias="itemData">
    @(Html.DevExtreme().DataGrid<Batch>().ID("gridContainer")
    .Columns(columns =>
    {
        columns.Add().CellTemplate(
          @<text>
            @(Html.DevExtreme().Button()
            .ID("sendButton")
            .Text("Select Batch")
            .OnClick("onItemClick")     
            )                          
          </text>);
        columns.AddFor(m => m.Id);
        columns.AddFor(m => m.Name).Caption("Name");
    })
    .DataSource(d => d.Mvc().Controller("Batches").LoadAction("GetAllEntries").Key("BatchId")) 
    ) 
</div>
所以当我按下Id值为1的单元格旁边的按钮时,我想获取这个值并在屏幕或控制台上打印出来。当我按下id值2旁边的按钮时,我想抓取2的值并执行相同的操作

我有以下js代码试图实现这一点:

function onItemClick(e) {
    DevExpress.ui.notify("The " + e.component.option("value"));
  }

然而,这是行不通的。要获得正确的单元格值,我需要做什么?

添加自定义单元格模板cellTemplate回调以接收单元格按钮单击时的完整行数据

cellTemplate: function (container, options) {
                    $("<div>")
                        .append($("<button>", { text:"Button","data-key":JSON.stringify(options.data), "click": function(e){
                           console.log("Button Click Row Data => ",JSON.parse(e.target.getAttribute('data-key')));
                        }.bind(this) }))
                        .appendTo(container);
                }

我创建了一个JSFIDLE演示供参考-

实现这一点的最简单方法是使用本文中描述的方法。即,在Button OnClick事件处理程序中,可以使用数据变量访问当前网格行:

columns.Add().CellTemplate(
    @<text>
        @(Html.DevExtreme().Button()
                .ID("sendButton")
                .Text("Select Batch")
                .OnClick("function () { onItemClick(data); }")
        )
    </text>);

谢谢你。但是,我需要它在按下按钮时工作,而不是在单击单元格时。@N0xus我已经更新了答案,以便在单击按钮时实现。更新JS小提琴-
columns.Add().CellTemplate(
    @<text>
        @(Html.DevExtreme().Button()
                .ID("sendButton")
                .Text("Select Batch")
                .OnClick("function () { onItemClick(data); }")
        )
    </text>);
function onItemClick(data) {
    DevExpress.ui.notify(data.Id);
}