2017-09-19 7 views
1

Ich habe eine Liste von 6k Einträge im Zusammenhang mit einer Ressource.Wie fügt man Listenverhalten zu ReferenceManyField hinzu?

Ich möchte in der Lage sein, aufzulisten, suchen und Paginieren über sie in einem TabbedForm/FormTab. ReferenceManyField zeigt eine begrenzte Anzahl von Einträgen an.

Was ist die empfohlene Methode zur Erweiterung von ReferenceManyField oder stattdessen die Verwendung von List?

Antwort

1

Nach diesen beiden Fragen: https://github.com/marmelab/admin-on-rest/issues/998 und https://github.com/marmelab/admin-on-rest/issues/561 Sie nicht List in ReferenceManyField und die vorgeschlagene Art und Weise eine Taste mit zu tun, verwenden können, die Sie auf die im Zusammenhang List Komponenten mit dem richtigen Filter umleitet.

Beispiel:

class LinkToRelatedReviews extends React.Component { 
    render() { 
    return (<FlatButton 
     primary 
     label={ translate("Full list of reviews by user") } 
     icon={<ReviewsIcon />} 
     containerElement={ 
      <Link to={{ 
       pathname: '/reviews', 
       search: stringify({ filter: JSON.stringify({ userId: [this.props.params.id] }), page: 1 }), 
      }} 
     />} 
    />) 
    } 
} 

export default LinkToRelatedReviews; 

So etwas kann

<LinkToRelatedReviews params={props.match.params}/> 

unter DataGrid in UsersShow Komponente gesetzt werden, die nicht Paginierung nicht liefern kann aber für einige der Ergebnisse holen. https://marmelab.com/admin-on-rest-demo/#/segments und klicken Kunden:

Sie können auch durch die Navigation in Aktion sehen. Dadurch werden Sie zu CustomersList weitergeleitet, das nach dem bestimmten Segment gefiltert wird.

+1

In der Tat fiel ich in diese Art von Code + benutzerdefinierte Routen. Thx – Fonzarely

+0

@Fonzarely scheint der offizielle Weg zu sein, dies gemäß den Hauptmitwirkenden des Git-Repositories zu tun - wenn dies Ihre Frage beantwortet, akzeptieren Sie bitte. Vielen Dank :) –

3

Sie können die DataGrid-Komponente für eine große Anzahl von Einträgen verwenden. Ich denke, es könnte bei Ihnen Verwirrung über List geben. List ruft nur Datensätze ab und das tatsächliche Rendern wird von DataGrid ausgeführt.

ReferenceManyField akzeptiert filtern, sortieren usw. Parameter, die Sie die Anzahl der Datensätze steuern können abgerufen aus dem API zu sein.

+0

Thx, ich werde es sofort versuchen. – Fonzarely

Verwandte Themen