Прежде всего, с кодом как есть, вы устанавливаете свойство DataField, которое является ИМЯ столбца, на который он должен смотреть, на ЗНАЧЕНИЕ столбца, на который он должен смотреть.Во время выполнения GridView попытается выполнить привязку к полю пользователя с именем «MALARIA» (или, более вероятно, он не сможет определить, что именно означает объект «Пользователь», чтобы вначале ввести значение в разметку).BoundField также не должен знать, что объект, содержащий искомое свойство, имеет тип User;он попытается выполнить простой рефлексивный вызов GetProperty (), используя имя указанного вами столбца;в случае сбоя привязка этого столбца завершится неудачей.
После исправления этих ошибок вы все равно обнаружите, что BoundField самопроизвольно не будет рекурсивно повторяться через идентификатор составного элемента, такой как «диагноз диагностики.ДиагнозКод».Решение состоит в том, чтобы реализовать ICustomTypeDescriptor или ITypedList on Diagnosis, каждый из которых предоставляет методы, которые BoundField будет использовать, чтобы помочь ему пройти через составной идентификатор.