A warning/caution icon (below) is automatically displayed with the "No data" message. This makes it appear that the application is broken, or that the user did something wrong, when neither is the case.
We should be able to remove the icon, because having no records returned, especially for related tables, is perfectly fine and often to be expected.
Also, because we can't conditionally display text or buttons, we use list widgets with just one row showing to conditionally display text (such as a header for a conditional list displayed beneath it), and to conditionally display buttons (such as a button to open a window with a form for the user to edit records they submitted, if any). We can display a blank "no data" text message in those cases, but the warning icon remains, adding yet more complications trying to patch over it with another widget.