2014-02-19 3 views
0

У меня есть MPE, mpeNew внутри Updatepanel, с кнопкой btnClose внутри. Он должен появиться с событием selectedIndexChange из нескольких dropdownlists на странице.ModalPopUpExtender не работает с DropDownList

C#:

protected void ddlCustomer_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if(ddlCustomer.SelectedIndex==1) 
    { 
    ViewState["sender"] = sender; //MPE shows up only when this line's commented 
    mpeNew.show(); 
    } 
} 

protected void btnClose_Click(object sender, EventArgs e) 
{ 
    mpeNew.Hide(); 
    DropDownList ddl = (DropDownList)ViewState["sender"]; 
    ddl.SelectedIndex = 0; 
} 

модальный проявляются только тогда, когда декларация ViewState комментируются. Но это действительно необходимо для того, чтобы узнать, какой раскрывающийся список открыл Modal. Также попытался использовать это раскрывающееся меню в качестве триггера в обновленной панели. Ошибка отсутствует. Модальная просто не поп. Где я иду не так. Или есть другой способ получить то, что я хочу.

+0

Попробуйте включить JavaScript-ошибки и отладить в браузере, чтобы увидеть, есть ли ошибка на стороне клиента. –

+0

'Uncaught PagerequestManagerServerErrorException. Ошибка сериализации значения system.web.ui.webcontrols.dropdownlist типа system.web.ui.webcontrols.dropdownlist' Является ли это причиной. О чем это. Как исправить? – Ruby

+1

Я ответил на ваш вопрос, исходя из вашего комментария, ошибка происходит потому, что DDL не помечен как serilizable, поэтому он не может быть сохранен в ViewState. –

ответ

1

Управление распаковкой не является сериализуемым, поэтому при переходе для сохранения в режиме просмотра код разбивается. Вместо сохранения отправителя было бы более целесообразно сохранить идентификатор выпадающего списка в ViewState. По идентификатору вы всегда можете найти функцию управления FindControl("Id"). Exaple на основе вашего кода:

ViewState["sender"] = ddlControl.ID; 

DropDownList ddl = (DropDownList)FindControl(ViewState["sender"]); 

Надеюсь, это поможет.

+0

Большое спасибо – Ruby

+0

Это не сработало. Я попытался - DropDownList ddl = (DropDownList) FindControl (ViewState ["sender"]. ToString()); 'ddl - null. – Ruby

+1

Если выпадающее меню находится внутри любой панели, попробуйте, например. Panel1.FincControl (ViewState [ "отправитель"]. ToString()). Я думаю, что это сработает. –

Смежные вопросы