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

Ваш аккаунт

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

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

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

Обработка событий серверных контролов на стороне клиента (ASP.NET 2.0)

5
23 июля 2008 года
hardcase
4.5K / / 09.08.2005
Имеется DataGridView, в котором создается столбец-шаблон (TemplateField). В шаблоне формируется несколько контролов.
Задача: на один из TextBox-ов повесить событие onchange с некоторым функционалом на JavaScript. Проблема заключается в том, что параметры события зависят от привязываемого объекта с данными (у объекта спрашивается свойство Id) и нужно использовать что-то типа <%# Eval("Id") %>
MSDN на данную тему предлагает код вида
 
Код:
<asp:TextBox ID="text1" runat="server" &#111;&#110;change="java script:alert('ахтунг!')" />
Парсер (ASP.NET 2.0), понятное дело, не пропускает этот код, оно и ясно - свойства onchange у текстбокса нету.
Посему использую следующий шедевр (кое чего из Fw 3.5):
Код:
<asp:TemplateField HeaderText="Значение">
    <ItemTemplate>
        <asp:TextBox ID="Offset" runat="server" Text='<%# Eval("Offset") %>' />
        <%# new Func<string>(delegate {
                WebControl parent = Container as WebControl;
                if (parent != null) {
                    WebControl control = parent.FindControl("Offset") as WebControl;
                    if (control != null) {
                        control.Attributes.Add("onchange", DataBinder.Eval(Container.DataItem, "Id", "java script:alert('{0}')"));
                    }    
                }
                return "";
            })()
            %>
        <ajax:SliderExtender ID="OffsetExtender" runat="server" TargetControlID="Offset"
            Minimum="0" Maximum="100" BoundControlID="OffsetBound"  />
        <asp:TextBox ID="OffsetBound" runat="server" />
    </ItemTemplate>
</asp:TemplateField>
И это все ради того, чтобы привязать код на JavaScript к динамически компонуемому контролу...

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