2009-02-14 3 views
2

У меня есть хост-страница, которая динамически загружает несколько экземпляров одного и того же пользовательского элемента управления, назначая разные идентификаторы.Динамически загруженный идентификатор пользователя и javascript

После загрузки UC мне нужно будет использовать JS для получения ссылки на текстовое поле. Для этого мне нужен идентификатор клиента User control. Я имею доступ к идентификатору клиента UC на стороне сервера и могу установить скрытую переменную формы с этой информацией. Но я столкнулся с проблемой ссылки на эту переменную формы из javascript, поскольку мне нужен идентификатор клиента UC, чтобы иметь возможность сделать это.

Каков наилучший подход для решения этой проблемы?

ответ

0

Если я правильно понимаю, что вы можете получить доступ к идентификатору, бросая это между некоторыми тегами сценария на странице ...

var controlClientId = '<%= control.ClientID %>';

Тогда просто использовать controlClientId в ваших JS.

EDIT: Я не совсем понимаю, что делает код на вашем конце, но я предполагаю, что вы только что обновили некоторые экземпляры этого элемента управления в цикле и назначили им уникальный идентификатор и добавили их ? Если это так, то я бы запустил цикл в вашем коде, чтобы найти все элементы управления и зарегистрировать их в массиве клиентов, или просто сделать это по мере их создания.

ClientScript.RegisterArrayDeclaration("ControlIds", String.Concat("'", Control.ClientID, "'")) 

Тогда вы можете делать такие вещи, как это в вашем Javascript ...

for (var i = 0; i < ControlIds.length; i++) alert(ControlIds[i]); 
0

Немногие ways-

  1. Используйте CSS классы для ссылки на элемент управления с помощью JavaScript. Предостережение: получение элементов по имени класса происходит медленнее, чем получение по id, особенно если вы часто это делаете.

  2. Вместо установки переменной формы, которая, в свою очередь, получает неясный идентификатор, вы можете установить переменную JavaScript в файле ASPX с помощью <% = userClient.ClientID%>

Смотрите этот блог сообщение для большего количества идей. http://blog.jagregory.com/2006/04/12/how-to-use-clientids-in-javascript-without-the-ugliness/

2

Один из подходов заключается в том, чтобы испустить сторону сервера js. Например, если вам нужно вызвать функцию на этом текстовом поле - простой пример:

что у вас есть некоторые JavaScript:

function ShowMeTheId(id) 
{ alert(id); } 

В коде позади вы можете поставить что-то вроде этого, чтобы назвать его с помощью кнопки и пропуска в вашем текстовом поле:

MyButton.OnClientClick = "ShowMeTheId('" + MyUserControl.TextBox1.ClientID + "'); return false;";