2009-01-19 4 views
2

Я создал подкласс таблицы в моем проекте ASP.NET, который создает. В таблице используется класс, который форматирует и создает TableRows и TableCells, которые мы можем назвать RowCreator. Поэтому MyTable вызывает rowCreator.CreateRow() и возвращает TableRow с множеством положительных эффектов.Как получить правильный идентификатор клиента для моего текстового блока ASP.NET?

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

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

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

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

который не работает. Идентификатор - это просто пространство имен подкласса текстового поля.

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

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

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

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

ответ

7

Вы можете изменить яваскрипт вызова этому:

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

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

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

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

+0

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

Смежные вопросы