public class Button : System.Web.UI.WebControls.Button
{
protected override void Render(HtmlTextWriter writer)
{
PostBackOptions pbo = GetPostBackOptions();
writer.AddAttribute(HtmlTextWriterAttribute.Name, pbo.TargetControl.UniqueID);
writer.AddAttribute(HtmlTextWriterAttribute.Id, ClientID);
writer.AddAttribute(HtmlTextWriterAttribute.Onclick, string.Format("{0}WebForm_DoPostBackWithOptions(;"e{1}"e,...далее всякие остальные опции...)", //исходника сейчас перед глазами нет
(pbo.RequiresJavaScriptProtocol ? "java script:" : string.Empty), pbo.TargetControl.UniqueID));
writer.RenderBeginTag(HtmlTextWriterTag.Button);
writer.WriteEncodedText(Text);
writer.RenderEndTag();
}
}
Контрол кнопки
мне понадобилось написать свои контрол кнопки, один в один точно такой же как стандартный asp:Button, но
в отличие от него использующий тег <button>, а не <input type="submit" ...> как стандартный контрол...
я решил, что проще всего было бы создать новый контрол, наследник от asp:Button (т.е. от класса
System.Web.UI.WebControls.Button) и переопределить метод Render.
Собсно так я сначала и сделал:
Код:
После этого протестил контрол на обычной странице - все зашибись работает! - но рано обрадовался, блин...
как только поместил этот контрол внутрь UpdatePanel ajax-вой - так сразу все работать перестало...
Станица никаких ошибок не выдает и сам контрол даже рисуется, но UpdatePanel не перерисовывется ни
при каких пост баках! - как тока меняю контрол обратно на стандартную кнопку, так сразу все начинает работать
Подскажите в чем косяк??? Т.е. по сути новый контрол отличается тока рендером - код на страницу выдает один в один как стандартный (за исключением тега ессесвено)... - так блин че ж ему не работается внутри UpdatePanel-а?
---------------------
Может как нибудь по другому создавать контрол кнопки с тегом <button>?
Сделал:
Код:
<button id="btnToNext" runat="server" onserverclick="btnToNext_Click">Далее</button>
И все работает и с UpdatePanel и стили нормально накладываются :)
-----------------------
Хотя по прежнему интересно, почему не работал предыдущий вариант на UpdatePanal-е.