Как получить правильный ClientID для моего ASP.NET TextBox? - PullRequest
2 голосов
/ 19 января 2009

Я создал подкласс 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 + "');")

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

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

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

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

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

1 Ответ

7 голосов
/ 19 января 2009

Вы можете изменить вызов JavaScript следующим образом:

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

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

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

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

...