如何从ng网格中按顺序获取当前数据

时间:2013-07-18 21:17:53

标签: angularjs ng-grid

在我的网络应用程序中,我有2个网格。第二个绑定到第一个网格selectedItems,这是正常工作。问题是我想获取第二个网格中的元素列表(理想情况下,在数据中反映的第二个列表中应用了任何排序),因此我可以将更改提交给数据库。

所以问题是我如何尝试访问第二个网格上的数据:

surveyModel.surveySelectedSectionsGrid.data

我找回了用于设置网格选项的字符串,其中包含:

surveyModel.surveySectionGrid.selectedItems

我想要的是用于第二个网格的实际数据模型。

以下是我的两个网格选项定义:

    surveySectionGrid: {
        data: 'surveyModel.surveySections',
        multiSelect:true,
        selectedItems:[],
        showFilter:true,
        columnDefs: [
                { field: 'name', displayName: 'Questions/Sections' },
                { field: 'sectionTypeDescription', displayName: 'Section Type' },
                { displayName: 'Edit',
                  field:'sectionId',
                  cellTemplate:'<div class="ngCellText" ng-class="col.colIndex()"><span ng-cell-text><button ng-click="gotoEditSection(row.getProperty(col.field))">Edit {{row.getProperty(col.field)}}</button></span></div>'
                }
                ]
    },
    surveySelectedSectionsGrid: {
        data: 'surveyModel.surveySectionGrid.selectedItems',
        multiSelect:false,
        selectedItems:[],
        showFilter:true,
        columnDefs: [
                { field: 'name', displayName: 'Selected Sections for Survey' }
                ]
    }

我遇到的一些可能的想法

网格的rendereredRows属性是一个数组,其实体对象与数据中的原始元素相对应,但基于数组的名称,如果元素在屏幕外,它们将不会显示在此列表中。< / p>

我发现作为临时解决方法我可以在我的辅助网格上调用selectAll(true)然后使用selectedItems数组然后调用selectAll(false),但更直接的解决方案会很好。

1 个答案:

答案 0 :(得分:1)

编辑:能够通过this plnkr确认OP的问题。如果所有元素在ng-grid对象上都可见,则renderedRows将具有正确数量的元素。否则,renderRows将具有&lt; gridOptions.data.length对象以节省内存。

网格的renderedRows对象应该是你要找的东西。它具有当前以HTML格式呈现的所有对象(包括屏幕外的对象),这些对象来自传递给ng-grid对象的数据数组。

来源:我修改了ngGridCsvExportPlugin只包含过滤的项目。我使用了renderedRows对象,它就像一个魅力。编辑:少于20个元素,它运作良好。除此之外,这个解决方案崩溃了,最好的解决方案似乎是使用selectAll。

希望这有帮助,

布伦特