Вот в чем дело
Я добавил в веб-часть кнопку, которая сохраняет некоторые поля в MS-Excel.
var btn = new Button { Text = title, CssClass = css };
btn.Click += (sender,args)=>action();
Container.Controls.Add(btn);
Этот код находится внутри метода OnInit () в WebPart. action
- это Action
, который делает вещи, в данном случае:
Something.FillExcel(MyData);
Something.SaveExcel();
Итак, что происходит, я нажимаю кнопку, она действует как обычная частичная обратная передача и абсолютно ничего не делает. Я подумал, что это может быть что-то в коде Fill / Save, а затем попытался вызвать ошибку, просто чтобы посмотреть, получится ли она. Кажется, что событие click никогда не срабатывает, или, если оно происходит, оно не запускает мой код (?).
Вот HTML, на всякий случай:
<input type="submit" name="ctl00$m$g_b4af4370_c016_4712_9d60_fc8ca077a068$ctl359" value="Enviar Formulário" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$m$g_b4af4370_c016_4712_9d60_fc8ca077a068$ctl359", "", true, "", "", false, false))" class="button" />
Что может происходить?
Заранее спасибо!
РЕДАКТИРОВАТЬ: После того, как Cos Каллис ответил, я поместил свой код в OnLoad () вместо OnInit (). Вот новый код:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
var btn = new Button { Text = title, CssClass = css };
btn.Click += new EventHandler((sender,args)=>{
if (myform.Page.IsPostBack)
{
excel.FillExcel(); excel.SaveFile();
}
});
container.Controls.Add(btn);
}
Я получаю ошибку JavaScript: SCRIPT5022: Sys.WebForms.PageRequestManagerServerErrorException: The given key was not present in the dictionary.