Вы правы, что все в порядке, если он находится в UpdatePanel - это не должно иметь никакого значения.
Я подозреваю, что ViewState отключен либо для вашего элемента управления, либо для одного из его родителей: если он отключен для любого из родителей (вплоть до страницы), он будет отключен для вашего элемента управления.
Чтобы обойти это, вы можете использовать словарь ViewState страницы вместо того, что находится в вашем элементе управления.
т.е. вместо того чтобы сказать:
this.ViewState[ "Expandedness" ] = ListState.Expanded;
говорят:
this.Page.ViewState[ "Expandedness" ] = ListState.Expanded;
Если возможно, что на странице имеется более одного экземпляра вашего элемента управления, вам необходимо убедиться, что ключ ViewState уникален, возможно, так:
this.Page.ViewState[ this.ClientID + "Expandedness" ] = ListState.Expanded;
В качестве альтернативы (это будет работать, даже если ViewState отключен для страницы), вы можете рассмотреть возможность расширения в ControlState. Это немного сложнее, но Google, и вы найдете пример кода довольно быстро. Рекомендуется хранить только абсолютный минимум информации в ControlState, но единственный флаг, подобный этому, подходит (и на самом деле для чего он предназначен, на самом деле).