2010-03-25 2 views
1

У меня есть GridView, внутри UserControl, внутри UpdatePanel на странице.ASP.NET GridView и UpdatePanel

В GridView есть Button, которому необходимо запустить PostBack. Что происходит: Пользователь нажимает Button ->RowCommand Пожары -> Пользовательское событие поднято на UserControl -> Страница обнаруживает это и изменяет индекс активного представления для MultiView, а также заголовок страницы и некоторые другие элементы управления за пределами UpdatePanel.

Проблема заключается в том, что страница заходит асинхронно, название страницы изменяется, но действия, требующие полного PostBack, не происходят, потому что полного PostBack не происходит.

Чтобы зарегистрировать кнопку как PostBack триггер Я использую:

ImageButton btnResults = e.Row.FindControl("btnResults") as ImageButton; 
ScriptManager scrCurrent = ScriptManager.GetCurrent(this.Page); 
if (btnResults != null && scrCurrent != null) { 
    scrCurrent.RegisterPostBackControl(btnResults); 
} 

Я знаю, что это немного сложная проблема, но я бы очень признателен за любую помощь.

+0

Можете ли вы разместить свою разметку для кнопки изображения? – Nix

+0

Есть ли другие элементы в этом пользовательском элементе управления, которые вы хотите вызвать asynch postbacks, или это единственная кнопка, которая вызывает обратную передачу? – cptScarlet

+0

Кнопка Thee была единственной. См. Ответ ниже. – Echilon

ответ

1

Возможное решение заключалось в использовании вышеуказанного кода как есть, но в событии RowCreated вместо RowDataBound. Очевидно, что один из причуд ASP.NET, иногда порядок событий удивителен и, казалось бы, непредсказуем. По той же причине, я всегда считал, что лучше регистрировать JavaScript как можно позже, поэтому я обычно использую событие SaveStateComplete.