Как мне получить правильный ClientID для моего текстового поля ASP.NET?

Я создал подкласс Table в моем проекте ASP.NET, который создает. Таблица использует класс, который форматирует и создает TableRows и TableCells, которые мы можем назвать RowCreator. Итак, MyTable вызывает rowCreator.CreateRow () и возвращает TableRow с множеством полезных свойств.

В этой TableRow есть TextBox, который должен запускать метод javascript для события onblur, добавляемого классом RowCreator.

textBox.Attributes.Add("onblur", "javascriptMethod('" + textbox.ClientID + "');");

Я также попытался создать подкласс textBox, который реализует метод, который добавляет событие onblur:

Attributes.Add("onblur", "javascriptMethod('" + this + "');")

Что не работает. ID - это просто пространство имен подкласса текстового поля.

А метод JavaScript очень прост:

function javascriptMethod(boxId) { alert(boxId); }

Проблема в том, и я предполагаю, что это потому, что элемент управления textbox еще не был добавлен в коллекцию элементов управления, что boxId не является правильным идентификатором клиента. Это то же самое, что и идентификатор на стороне сервера. Есть ли способ получить правильный идентификатор без необходимости сначала добавлять строку с помощью Controls.Add на странице? Есть другие предложения?

Причина, по которой я это делаю, заключается в том, чтобы читать содержимое текстового поля из функции javascript всякий раз, когда оно было изменено. Может, есть способ лучше?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
5 604
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете изменить вызов javascript на это:

textBox.Attributes.Add("onblur", "javascriptMethod(this);");

Затем вы можете получить доступ к текстовому полю в своем методе javascript:

function javascriptMethod(textbox) { alert(textbox.id); }

Таким образом, вам не нужно будет использовать ClientID элемента управления текстовым полем.

Простое и элегантное решение.

Raithlin 19.01.2009 13:44

Другие вопросы по теме