在网格的第一个位置插入列

Insert column at the first position in grid

我试图在网格的第一个位置插入行选择,但它总是在隐藏的列中结束。我对删除按钮列做了同样的事情,效果很好。

protected getColumns(): Slick.Column[] {
var cols = super.getColumns();

    cols.unshift({
        field: 'Delete Row',
        name: '',
        format: ctx => '<a class="inline-action delete-row" title="delete">' +
            '<i class="fa fa-trash-o text-red"></i></a>',
        width: 24,
        minWidth: 24,
        maxWidth: 24,
        visible: true
    });

    cols.unshift(Serenity.GridRowSelectionMixin.createSelectColumn(() => this.rowSelection));

    return cols;

问题不是选择行的执行不正确。我知道这一点,因为我用不同的列尝试过,结果相同。我还尝试将“可见”设置为 true 有任何想法吗?谢谢

问题是使用此功能打开了数据持久化

protected getPersistanceStorage(): Serenity.SettingStorage {
        return new Common.UserPreferenceStorage();
    }

此代码将使您的选择列停留在第一个位置

protected getPersistedSettings() {
    let setting = super.getPersistedSettings();

    let idCol = Q.tryFirst(setting.columns, x => x.id == "__select__");
    if (idCol) {
        setting.columns.splice(setting.columns.indexOf(idCol), 1);
        setting.columns.splice(0, 0, idCol);
    }

    return setting;
}

但要确保选择不在隐藏列表中