Класс DataList
не сериализуем (на нем не установлен SerializableAttibute и он не реализует интерфейс ISerializable ).
Это означает, что .NET Framework не может сериализовать его и поместить в ViewState.
Так как это встроенный класс, вы не можете изменить его для сериализации.
Поскольку ожидается, что DataList будет содержать довольно много информации, размещение его во ViewState приведет к тому, что ViewState будет огромным, что скажется на производительности, поэтому имеет смысл не делать его сериализуемым.
Возможно, вы можете переосмыслить информацию, необходимую для помещения в ViewState, и добавить в нее лишь небольшую сумму (например, список идентификаторов).