Dextreme dxDataGrid:在单击该行上的按钮时将选定的 RowData 传递给函数
Devextreme dxDataGrid: Pass selected RowData to function when clicking on a button on that Row
我正在使用 dxDataGrid
UI Devextreme 产品的小部件。
我想将其中一列用作按钮。因此,到目前为止,我已经完成了以下列表:
我的一个领域
{ dataField: 'LetterNumber', caption: 'Letter Number', cellTemplate: showLetterImageTemplate }
显示按钮的 CellTemplate
function showLetterImageTemplate (cellElement, cellInfo) {
cellElement.html(' <button class="btn btn-info btn-sm btn-block" ng-click="show('+cellInfo+')">' + cellInfo.displayValue + ' </button> ');
$compile(cellElement)($scope);
};
点击Field中的按钮调用的函数
$scope.show = function (cellInfo) {
DevExpress.ui.notify("TEST" + cellInfo.data, "error", 2000);
}
问题是我想将当前点击的行数据传递给 Show()
函数,这样我就可以了解点击了哪一行。然而,当我点击按钮时,出现以下错误:
ng-click=Show([Object Object])
请注意,我使用 Agular 作为我的 UI 框架。
尝试使用下面的代码来定义cellTemplate
:
$scope.onClick = function(cellInfo) {
// cellInfo object
};
$scope.dataGridOptions = {
dataSource: [
{ name: "Alex", age: 23 },
{ name: "Bob", age: 25 }
],
columns: [
"name", {
dataField: "age", cellTemplate: function(cellElement, cellInfo) {
var $button = $("<button>")
.text("Click me")
.on("click", $.proxy($scope.onClick, this, cellInfo));
cellElement.append($button);
}
}
]
};
接下来,将此标记添加到视图中:
<div dx-data-grid="dataGridOptions"></div>
希望对您有所帮助!
// Based on your code, this should work for you
columns: [
// ...
{
dataField: "LetterNumber",
caption: "Letter Number",
cellTemplate: function (container, cellInfo) {
var gridButton = $("<button>")
// (if needed)
// .attr("attribute name (i.e. class, disabled)", "attribute value")
.text("Show Letter")
.on("click", function () { $scope.show(cellInfo) });
container.append(gridButton);
}
}
// ...
]
你也可以查看这个例子:
https://codepen.io/alfredomason1986/pen/KveBNd
我正在使用 dxDataGrid
UI Devextreme 产品的小部件。
我想将其中一列用作按钮。因此,到目前为止,我已经完成了以下列表:
我的一个领域
{ dataField: 'LetterNumber', caption: 'Letter Number', cellTemplate: showLetterImageTemplate }
显示按钮的 CellTemplate
function showLetterImageTemplate (cellElement, cellInfo) {
cellElement.html(' <button class="btn btn-info btn-sm btn-block" ng-click="show('+cellInfo+')">' + cellInfo.displayValue + ' </button> ');
$compile(cellElement)($scope);
};
点击Field中的按钮调用的函数
$scope.show = function (cellInfo) {
DevExpress.ui.notify("TEST" + cellInfo.data, "error", 2000);
}
问题是我想将当前点击的行数据传递给 Show()
函数,这样我就可以了解点击了哪一行。然而,当我点击按钮时,出现以下错误:
ng-click=Show([Object Object])
请注意,我使用 Agular 作为我的 UI 框架。
尝试使用下面的代码来定义cellTemplate
:
$scope.onClick = function(cellInfo) {
// cellInfo object
};
$scope.dataGridOptions = {
dataSource: [
{ name: "Alex", age: 23 },
{ name: "Bob", age: 25 }
],
columns: [
"name", {
dataField: "age", cellTemplate: function(cellElement, cellInfo) {
var $button = $("<button>")
.text("Click me")
.on("click", $.proxy($scope.onClick, this, cellInfo));
cellElement.append($button);
}
}
]
};
接下来,将此标记添加到视图中:
<div dx-data-grid="dataGridOptions"></div>
希望对您有所帮助!
// Based on your code, this should work for you
columns: [
// ...
{
dataField: "LetterNumber",
caption: "Letter Number",
cellTemplate: function (container, cellInfo) {
var gridButton = $("<button>")
// (if needed)
// .attr("attribute name (i.e. class, disabled)", "attribute value")
.text("Show Letter")
.on("click", function () { $scope.show(cellInfo) });
container.append(gridButton);
}
}
// ...
]
你也可以查看这个例子: https://codepen.io/alfredomason1986/pen/KveBNd