0

編集可能なグリッド ブレードを含むAzure portal 拡張機能を開発しています。グリッドのブレードはセレクターから開かれるため、パラメーター provider が含まれます

グリッドは、監視可能な配列であるパラメーター provider の編集スコープで初期化され、行の編集と新しい行の挿入が有効になります

グリッドを更新しようとすると、既存の行への変更が表示されず、新しい行を作成すると、次のように空の行が生成されます。

新しい行を追加するときの空行

デバッグ中にコンソールにエラーは表示されません。

グリッドを初期化する方法は次のとおりです。

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

編集可能なグリッドのいくつかのサンプル ブレードを確認しましたが、何が間違っているのかを特定できませんでした。

4

1 に答える 1

0

問題は、編集スコープのエンティティ タイプを決定するために必要なパラメーター プロバイダーの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();
    }
});
于 2016-07-11T15:25:47.153 に答える