Reka Karolyi
Reka Karolyi

Reputation: 229

React-admin SelectInput does not show the value in Edit using together with choises

I have a status field, coming from my API. It has a value between 0-3.

my response looks like this:

{ status: 0 }

I can show the value in Edit with TextInput, it shows the value (in this case 0).

However I want it to show it with SelectInput, as in Edit mode I want to change the value of the status.

my SelectInput looks like this:

          <SelectInput label="Status" source="status" choices={[
                       { id: '0', name: 'elfogadásra vár' },
                       { id: '1', name: 'aktív' },
                       { id: '2', name: 'inaktív' },
                       { id: '3', name: 'archív' },
                       ]} 
                       optionText="name" 
                       optionValue="id" 
          />

Unfortunately when I save this, and refresh my page, my Status does not show the current value (which is 0 in this case, it should show me 'elfogadasra var', but it's empty)

What do I do wrong?

Upvotes: 1

Views: 2575

Answers (2)

Kia Kaha
Kia Kaha

Reputation: 1801

Not the real reason but in case somebody is tackling with the same issue it is worth checking:

I found out I was passing initialValues to the Form component on create and haven't skipped them on the edit mode. That's why it was always resetting the SelectInput's.

Upvotes: 0

Greg Belyea
Greg Belyea

Reputation: 878

The way i achieved this was in the following manner

<ReferenceInput label="Country" source='country.id' reference="Country"  sort={{ field: 'name', order: 'ASC' }} alwaysOn>
   <SelectInput optionText="name" optionValue="id" allowEmpty />
</ReferenceInput>

I needed to load my choices from that database though however the concept is the same... i suspect that what you are using for source is wrong.. Look in the redux dev tools.. under state --> form --> record-form --> values and you should see something like status.id that you should be using for source instead.. i have the same type of object in my form country {id: 2}... but that is not what you use to get the input to show your existing value...

Your solution may be as simple as calling a diff value in source, but you'll know what that should be by peeking into the state {status: 0} must have something in front of it in state like something --> {status: 0}

Upvotes: 1

Related Questions