1

我正在使用dxDataGridDevextreme 产品的 UI 小部件。

我想让它的一列充当按钮。因此,到目前为止,我已经完成了以下清单:

我的领域之一

  { 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);
};

通过单击字段中的按钮调用的函数

$scope.show = function (cellInfo) {
    DevExpress.ui.notify("TEST" + cellInfo.data, "error", 2000);
}

问题是我想将当前点击的行数据传递给Show()函数,这样我就可以了解点击了哪一行。但是,当我单击按钮时,出现以下错误:

ng-click=Show([对象对象])

请注意,我使用 Agular 作为我的 UI 框架。

4

2 回答 2

3

尝试使用以下代码来定义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>

希望能帮助到你!

于 2015-05-15T07:41:23.610 回答
0
// 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

于 2017-08-29T18:38:09.223 回答