无法在 Azure 门户扩展中更新可编辑网格

Cannot update Editable grid in Azure portal extension

我正在开发一个包含可编辑网格 blade 的 Azure 门户扩展。 网格的 blade 是从选择器打开的,因此 包含参数提供程序 .

网格初始化为参数提供程序的编辑范围,这是一个可观察数组,启用行编辑和插入新行.

当我尝试更新网格时,不显示对现有行的更改并且创建新行会产生一个空行,如下所示:

调试时我在控制台中没有看到任何错误。

这是我初始化网格的方式:

private _initialize(container: MsPortalFx.ViewModels.PartContainerContract): void {
    var extensions: number = MsPortalFx.ViewModels.Controls.Lists.Grid.Extensions.EditableRow | MsPortalFx.ViewModels.Controls.Lists.Grid.Extensions.ContextMenuShortcut,
        extensionsOptions: MsPortalFx.ViewModels.Controls.Lists.Grid.ExtensionsOptions<DataModels.IItem, DataModels.ISelectionItem>,
        viewModel: MsPortalFx.ViewModels.Controls.Lists.Grid.ViewModel<DataModels.IItem, DataModels.ISelectionItem>;

    // Set up the editable extension options.
    extensionsOptions = this._createExtensionsOptions();

    // Create the grid view model.
    viewModel = new MsPortalFx.ViewModels.Controls.Lists.Grid.ViewModel<DataModels.IItem, DataModels.ISelectionItem>(
        container,
        null,
        extensions,
        extensionsOptions);
    viewModel.showHeader = true;
    viewModel.columns(this._columns);
    viewModel.rowAdd = () => {
        // code that extension authors need to execute when a row is added should go here.
    };
    this.editableGrid = viewModel;
}

private _createExtensionsOptions(): MsPortalFx.ViewModels.Controls.Lists.Grid.ExtensionsOptions<DataModels.IItem, DataModels.ISelectionItem> {
    return <MsPortalFx.ViewModels.Controls.Lists.Grid.ExtensionsOptions<DataModels.IItem, DataModels.ISelectionItem>>{
        editableRow: {
            // Supplies editable items to the grid.
            editScope: this.parameterProvider.editScope,
            // put the new row at the top.
            placement: MsPortalFx.ViewModels.Controls.Lists.Grid.EditableRowPlacement.Bottom,
            // Create no more than 5 new rows.
            maxBufferedRows: 5,
            // Allow the modification of existing items.
            allowEditExistingItems: true,
            // Allow the creation of new items.
            allowEditCreatedItems: true,
            // Track the valid status
            valid: ko.observable<boolean>()
        }
    };
}

我查看了几个 blade 可编辑网格示例,但无法确定我做错了什么。

问题是我没有设置参数提供者的 editScopeMetadataType 属性,这是确定编辑范围的实体类型所必需的:

this.parameterProvider = new MsPortalFx.ViewModels.ParameterProvider<DataModels.IItem[], KnockoutObservableArray<DataModels.SchemaItem>>(container, {

    // This was missing.
    editScopeMetadataType: wrapperTypeMetadataName,

    mapIncomingDataForEditScope: (incoming) => {
        return ko.observableArray(incoming);
    },

    mapOutgoingDataForCollector: (outgoing) => {
        return outgoing();
    }
});