У меня есть две проблемы, в которых я не уверен:
У меня есть два элемента управления DropDownList (изначально установленный как невидимый) и элемент управления RadioButtonList с поведением автоответчика, установленным в значение true.
Всякий раз, когда происходит обратная передача, я хочу прочитать свойство SelectedValue из элемента управления RadioButtonList - и, в зависимости от этого, сделать видимым один из DropDownLists.
Вот моя проблема:
1) Я не могу напрямую ссылаться на элемент управления RadioButtonList по его идентификатору. Кажется, что файл designer.cs не генерирует элементы управления RadioButtonList или DropDownList. Даже если я вручную добавлю элементы управления в файл designer.cs, они будут потеряны при восстановлении. Это ожидаемое поведение?
2) Я пытался использовать свойство Page.FindControl в методе Page_Load ().
if(Page.PostBack==true)
{
RadioButtonList rbl = (RadioButtonList)Page.FindControl("RadioButtonList1");
if(rbl.SelectedValue=="optionA")
{
DropDownList ddA = (DropDownList)Page.FindControl("DropDownListA");
ddA.Visible = true;
}
else
{
DropDownList ddB = (DropDownList)Page.FindControl("DropDownListB");
ddB.Visible=true;
}
}
Но я получаю исключение NullReferenceException при условии if.
Я совершенно не на том пути? Кто-нибудь подскажет мне, как лучше всего достичь того, чего я хочу?
Кроме того, что я могу сделать, чтобы файл designer.cs загружал элементы управления?
РЕДАКТИРОВАТЬ: / facepalm
Я понял это сам. Я забыл, чем использую элемент управления внутри таблицы.
Как только я переместил элемент управления за пределы таблицы, я мог напрямую обратиться к идентификатору.
Недостаток сна и кофе виноват. Мои извенения. Спасибо за помощь!