To get a dropdown list of values used in your layer but in an alphabetical order, one workaround is to use the Value Relation widget, but then selecting the same layer itself as the Layer under Value Relation, and the species field as the Key and Value columns.
Then to prevent duplicate values appearing in the list, adapt the following expression in the Filter Expression textbox (per this answer):
$id=array_first(array_agg($id,"species_field"))
Example:
However, in both instances, the list will only ever show you what is already in your dataset. If you only have 7 unique species that is all it will show you.
To add species that aren't already in your dataset, you can only do it using the Unique Values widget and would need to enable the 'Editable' option to add additional entries, but then you no longer have a drop down box, just an autocompleter.
For your use case I suspect you would be better off using Value Relation with a master csv of species names. However, it appears you need to use a better master list as the brackets () in your existing dataset indicate values that are in your dataset, but not your master list. I would recommend checking your master list to make sure everything is in it already.
For what it's worth there have been requests to make the Unique Values list sortable since 2018 at least, I don't know that it will be implemented just yet unless you poke one of the developers directly.
Edit: The above solution can be unusably slow on large datasets. In such instances if you still only want to use values in your source layer, try creating a Virtual Layer (Layer > Create > New Virtual Layer)
And use the following query adapted to your dataset:
SELECT species_field FROM source_layer_name GROUP BY species_field
Then use that resulting virtual layer in your Value Relation widget.
It still takes a couple of seconds for the attribute form to open for a source layer shapefile with 45000 features and about 440 unique species values.
The only way to improve the speed would I think be to move the dataset onto an actual server with SQL views that would load a lot faster.
Best Answer
You additionally have to save the layer style to a
.qml
file. Widgets and forms are saved there.