DataTableRowHandle not a settable variable in widget blueprint

SO I just converted a project from 4.7 to 4.8 and upon further developing my blueprints, I found that I couldn’t set variable types to a DataTableRowHandle stuct. Everything in my old blueprints that have a DataTableRowHandle Struct variable operate fine, as if nothing changed. But if I change their variable type, then all of sudden I can’t revert them back to a DataTableRowHandle struct variable. pic below serves to help you visualize my error/bug/problem/newb-knock.

Hi morglion,

Thanks for report! I was able to reproduce lack of this variable type option in 4.8.3 as well as 4.9.0 and our internal build, so I’ve entered a bug report for it (UE-21056). I’m not certain why this would be intentionally deprecated, but I’ll let you know what if I find that it was. Otherwise I’ll post here when I see any update on report. Thanks!

I should be clear here - that I think it has to do with datatable being converted with project version, and/or use of variable type in a blueprint that is then converted into a higher project version. I can duplicate this every time I convert source project into another project in 4.8. HOWEVER, if I delete datatable in old project and convert - it works.

I don’t suppose there is a work around here to relist missing variable type?

I wasn’t able to find variable type at all in 4.8.3 or later versions. If you see it in 4.8 in a project converted from 4.7, that makes sense (converting project is not meant to destroy existing functional variables), as would inability to change it back to that variable type after switching it to another type. This is in any Blueprint class, not just widgets.

Are you seeing something different? Am I misunderstanding you?

Unfortunately none that I am aware of. I will let you know if I discover any.

So you’re in fact telling me that they got rid of variable type all together? Am I understanding you correctly?

No I guess being clear was not being clear ha ha :smiley: My project works correctly either way - just not variable in my blueprints using datatablerow (in 4.8) and its variable type (in 4.7). If I delete datatable before convert, my project works fine too - but only if I call asset using datatable functions in every single blueprint, rather than make a variable and call it instead.

That’s correct. I’m not sure whether it was intentional, however, so I entered that bug report.

How exactly does this work in source code for ue? If it reads variable type from previous version but cannot assign it as a variable, that means it has to store use of variable type’s structure - being that it’s no longer a variable assignable in new versions of engine. SO my question remains, is there a way to apply previous variable type to ones present in newer version of project - even if I have to edit source code? If it is a bug, than I will have a solution. If it isn’t a bug, I need to figure out a work around.

I looked into it, and it appears change in 4.8 is a result of a fix to a crash that occurred when setting a struct variable type to DataTableRowHandle (in 4.7). A comment on fix says that DataTableRowHandle shouldn’t be marked as BlueprintType. I’m still attempting to see if this shouldn’t be exposed, and we’ll post here with more information when we have it.

That fix can be found here:
https://github.com/EpicGames/UnrealEngine/commit/daece537f1f70e6a3b1538bd43d1514292c69571

If you were to revert that change to DataTable.h (by adding “BlueprintType” to USTRUCT() definition), you should be able to use this in Blueprints again. This will definitely reintroduce possibility of a crash if you set a struct’s variable to DataTableRowHandle, however.

above page returns a 404 error. I can’t see it and gh says its not a page.

You need to be signed into GH with an account you have linked to Epic. Did you follow instructions here?