角度 ui 网格:如何根据第一个网格的行选择值刷新第二个网格



有 2 个网格 grid1 grid2。我的要求是:当我在 grid1 中选择一行时,grid2 应该刷新。我能够根据我的服务中的行选择获取修改后的数据,但我无法让它显示在我的 grid2 上。我试过了

$scope.grid2 = function () { $scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);
$scope.gridApi.core.refresh();}

以上两个都在 grid1 onRegisterAPI 内的 RowSelectionChanged 事件中

$scope.gridOptions.onRegisterApi = function (gridApi) {
    $scope.gridApi = gridApi;
    $timeout(function () {
        $scope.gridApi.selection.on.rowSelectionChanged($scope, function (row) {
            $scope.value = row.entity.MVE_VEID;
            console.log($scope.value);
            $scope.contractvalues = contracts.query({ id: $scope.value });
            console.log($scope.contractvalues);
            $scope.gridoptions2 = function () { $scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);  $scope.gridApi.core.refresh(); }
            $scope.refresh = true;
        });

如何刷新 grid2 中的数据?

当前代码:控制者.js

<pre>
    angular
        .module('VendorApp')
        .controller('ang_contcontroller', ang_contcontroller);
    ang_contcontroller.$inject = ['$scope','contracts'];
    function ang_contcontroller($scope, contracts) {
        $scope.contractvalues = contracts.query({ id: $scope.value });
        $scope.gridoptions2 = {
            enableRowHeaderSelection: false,
            multiSelect: false,
            enableRowSelection: true,
            enableSelectAll: true,
            enableSorting: true,
            enableFiltering: true,
            enablePagination: true,
            enablePaginationControls: true,
            paginationCurrentPage: 1,
            paginationPageSize: 100,
            maxVisibleColumnCount: 200,
            columnDefs: [
              { name: 'CONTRACTID', field: 'MCO_COID' },
              { name: 'NAME', field: 'CO_DESC' },
              { name: 'VENDORID', field: 'MCO_VEID' }
            ],
            data: $scope.contractvalues
        };
        $scope.gridoptions2.onRegisterApi = function (gridApi) {
            $scope.gridApi2 = gridApi;
        }
    }

vencontroller.js
    $scope.gridOptions.onRegisterApi = function (gridApi) {
                $scope.gridApi = gridApi;
                $timeout(function () {
                    $scope.gridApi.selection.on.rowSelectionChanged($scope, function (row) {
                        $scope.value = row.entity.MVE_VEID;
                        console.log($scope.value);
                        $scope.contractvalues = contracts.query({ id: $scope.value });
                        console.log($scope.contractvalues);
                        $scope.gridoptions2 = {};
                        $scope.gridoptions2.data = $scope.contractvalues;
                        //$scope.gridApi2.refresh();
                        $scope.grid2 = function () {
                            $scope.gridApi2.core.notifyDataChange(uiGridConstants.dataChange.ALL);
                            $scope.gridApi2.core.refresh();
                        };
                        //$scope.grid2 = function () {
                        //     $scope.gridoptions2 = angular.copy($scope.gridoptions2);
                        //     $scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL= function () { $scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL); },$scope.gridApi.core.refresh(); );
                        // }
                        //$scope.refresh();
                        //$scope.gridoptions2 = function () { $scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL); }
                    });
                });
    <code>
如果我

理解正确,您需要更新 grid2 的数据你写道,你可以得到修改后的基础数据,比如"newData"。将此新数据分配给"$scope.gridoptions2.data"

$scope.gridoptions2.data = newData;

最新更新