У меня был похожий, но немного более сложный случай, и мне потребовалось больше дня, чтобы выяснить этот ответ. (Ответ по существу такой же, как и у @serkan. Я просто расширяю его.) У нас был пользовательский элемент управления ASP.NET, в котором была кнопка, которая при нажатии генерировала изображение и запускала загрузку изображения , Это прекрасно работало на обычной странице, но не совсем, когда пользовательский элемент управления был встроен в панель обновления. Я не мог понять, как сказать панели обновления, чтобы она выполняла обычную обратную передачу только для этой кнопки, тем более что кнопка находилась в пользовательском элементе управления и не имела явного доступа к ней со страницы, использующей ее.
То, что в итоге сработало, было предельно просто. Не нужно было пытаться указать триггер обратной передачи для панели. Вместо этого, в Page_Load пользовательского элемента управления , я добавил следующее:
protected void Page_Load(object sender, EventArgs e)
{
// If the chart is within an update panel then we need to tell the script manager
// to not do an asynch postback on chartdownload. If we don't, the download
// doesn't work.
var scriptManager = ScriptManager.GetCurrent(Page);
if (scriptManager != null)
{
scriptManager.RegisterPostBackControl(ChartSaveButton);
}
// Rest of Page_Load followed here...
Кроме того, я создал свойство ChartSaveButton
, чтобы получить легкий доступ к элементу управления для кнопки:
private Control ChartSaveButton
{
get { return FindControl("btnDownloadChart"); }
}
(«btnDownloadChart» - это идентификатор кнопки.)
Добраться сюда было мучительно, но я рад, что решение такое элегантное. Я надеюсь, что это поможет вам.