J'essaie de désactiver de manière conditionnelle les événements de clic de souris sur certaines lignes d'une liste de détails OUIF. Mais je n'arrive pas à le faire fonctionner. J'ai essayé de surcharger onRenderRow et de mettre CheckboxVisibility à none mais il était toujours cliquable. Ensuite, j'ai essayé de l'entourer d'un div et de le désactiver. Cependant, div dans React ne semble pas avoir désactivé l'attribut. Alors quelqu'un peut-il m'aider ici?Désactiver les lignes dans une interface utilisateur Office React DetailsList
<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);
}
}
Solution:
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";
}
Déjà essayé de surcharger l'événement onClick. Cependant, cela n'empêche pas la ligne d'être sélectionnée. Suppression de l'événement curseur DID fonctionne, mais je pouvais toujours sélectionner la ligne en utilisant la case à cocher tout sélectionner. Je pense que je dois travailler avec l'objet Selection lié à la liste des détails. – LeonidasFett