我想在OUIF DetailsList中的某些行上有條件地禁用鼠標單擊事件。但我似乎無法讓它工作。我試着覆蓋onRenderRow並將CheckboxVisibility設置爲none,但仍然是可點擊的。然後我嘗試在它周圍包裝一個div,並將其設置爲禁用。但是,React中的div似乎沒有禁用屬性。那麼有人可以幫我在這裏嗎?在Office用戶界面中禁用行反應詳細信息列表
<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