The reason for this is because the data is being set on an instance of the struct, not in the data table itself. Unfortunately this is a limitation with how data tables are created through the engine. Data can only be modified in editor for the default data tables, the unlock variable is only really for testing purposes.
How to go about this… When a card is unlocked you can create a custom function for adding, removing and checking(bool) whether a card has been unlocked. The easiest thing to do would have these functions add the unlocked card name to an array and have this saved locally. You will then be able to get whether or not a card is in the player list and make small modifications to the deck builder/loader to make sure that the cards its displaying and addable are unlocked (In the list) or not.
The Deck builder already has the ability to save out lists of card (decks) so you can look into this if your unsure of how to go about reading and saving data. Let me know if you need more details!