OUIF DetailsListの特定の行でマウスクリックイベントを条件付きで無効にしようとしています。しかし、私はそれを動作させるように見えることはできません。私はonRenderRowをオーバーライドし、CheckboxVisibilityをnoneに設定しようとしましたが、それでもクリック可能でした。それから私はそれの周りにdivをラップし、無効に設定してみました。しかし、Reactのdivは属性を無効にしていないようです。誰も私をここで助けてくれる?Office UIファブリックの行を無効にする詳細リスト
<DetailsList
items={this.state.items}
columns={this.getColumns()}
selection={this.selection}
selectionMode={SelectionMode.multiple}
onRenderRow={this.renderRow.bind(this)}>
</DetailsList>
private renderRow(props: IDetailsRowProps, defaultRender: any){
let state = this.state.items[props.itemIndex].workflowState;
if(state === "disabledState"){
//props.checkboxVisibility = CheckboxVisibility.hidden; <- Not working
// return <div disabled={true}>{defaultRender(props)}</div> <- Not working
return defaultRender(props);
}
else{
return defaultRender(props);
}
}
ソリューション:
this.selection = new Selection({ canSelectItem: this.canSelectItem.bind(this), onSelectionChanged: this.clickRow.bind(this) });
<DetailsList
items={this.state.items}
columns={this.getColumns()}
selection={this.selection}
selectionMode={SelectionMode.multiple}
onRenderRow={this.renderRow.bind(this)}>
</DetailsList>
private canSelectItem(item: any): boolean {
return item.state !== "disabledState";
}
すでにonClickイベントをオーバーライドしようとしました。ただし、これで行が選択されることはありません。カーソルイベントのDIDを削除しても、[すべてを選択]チェックボックスを使用して行を選択できます。詳細リストにバインドされているSelectionオブジェクトを操作する必要があると思います。 – LeonidasFett