Javascript DevExtreme datagrid在单击按钮时返回单元格值
在我的项目中,我在razor页面中设置了一个简单的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>
<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);
}