Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: 6322
Последний выпуск: 19.06.2015

Контрол кнопки

279
01 марта 2011 года
bave
456 / / 07.03.2004
Приветствую,

мне понадобилось написать свои контрол кнопки, один в один точно такой же как стандартный asp:Button, но
в отличие от него использующий тег <button>, а не <input type="submit" ...> как стандартный контрол...

я решил, что проще всего было бы создать новый контрол, наследник от asp:Button (т.е. от класса
System.Web.UI.WebControls.Button) и переопределить метод Render.

Собсно так я сначала и сделал:

Код:
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(;&quote{1}&quote,...далее всякие остальные опции...)", //исходника сейчас перед глазами нет
                (pbo.RequiresJavaScriptProtocol ? "java script:" : string.Empty), pbo.TargetControl.UniqueID));

            writer.RenderBeginTag(HtmlTextWriterTag.Button);
            writer.WriteEncodedText(Text);
            writer.RenderEndTag();

        }
    }


После этого протестил контрол на обычной странице - все зашибись работает! - но рано обрадовался, блин...
как только поместил этот контрол внутрь UpdatePanel ajax-вой - так сразу все работать перестало...
Станица никаких ошибок не выдает и сам контрол даже рисуется, но UpdatePanel не перерисовывется ни
при каких пост баках!
- как тока меняю контрол обратно на стандартную кнопку, так сразу все начинает работать

Подскажите в чем косяк??? Т.е. по сути новый контрол отличается тока рендером - код на страницу выдает один в один как стандартный (за исключением тега ессесвено)... - так блин че ж ему не работается внутри UpdatePanel-а?
---------------------
Может как нибудь по другому создавать контрол кнопки с тегом <button>?
279
02 марта 2011 года
bave
456 / / 07.03.2004
Все разобрался сам - оказывается все гораздо проще - есть серверный button, так что никакого контрола своего делать не надо.

Сделал:

 
Код:
<button id="btnToNext" runat="server" &#111;&#110;serverclick="btnToNext_Click">Далее</button>


И все работает и с UpdatePanel и стили нормально накладываются :)

-----------------------
Хотя по прежнему интересно, почему не работал предыдущий вариант на UpdatePanal-е.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог