Как найти динамически генерируемый HTML-элемент? - PullRequest
0 голосов
/ 22 июля 2010

Мне нужно получить экземпляр RadComboBox на стороне клиента (или только что выбранное значение RadComboBox), когда моя RadGrid выходит из режима редактирования, чтобы я мог отправить измененное значение обратно на сервер.

Проблема в том, что идентификатор объекта на стороне клиента всегда меняется. Кроме того, RadComboBox не создаются во время выполнения - они создаются только после того, как пользователь дважды щелкнет по определенной строке моей RadGrid. Следовательно, такой синтаксис, как

var SundayLoc = $find("<%= FieldOpsScheduler_ctl00_ctl05_RCB_SunLocale.ClientID %>");

равно FAIL. Пока я не начал менять значения, мне удавалось сойти с рук:

var SundayLoc = $find("FieldOpsScheduler_ctl00_ctl05_RCB_SunLocale");

Это работало идеально каждый раз, пока я не добавил некоторые объекты-разделители строк, которые теперь приводят к тому, что «ctl05» идентификаторов всегда меняется в зависимости от того, какую строку пользователь переводит в режим редактирования. Я пытался использовать все вопросы для получения этого объекта и его стоимости, но безрезультатно.

Я собирался использовать регулярные выражения, пока после прочтения вики-ответа сообщества от bobince на RegEx не совпадало с открытыми тегами, за исключением автономных тегов XHTML , я не осознал, что соблазн разбирать HTML регулярные выражения - это работа нечестивого сатанинского спавна (и после дальнейших исследований я пришел к выводу, что регулярные выражения, вероятно, мне не помогут).

Во всяком случае, если бы кто-то мог бросить мне некоторые идеи, я был бы очень благодарен. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 23 июля 2010

Хорошо, так что ответ, который я получил в итоге, не очень красноречив, но он на 100% надежен и все на стороне клиента (что хорошо, потому что моя компания использует IE7 в качестве стандартного веб-браузера x_x).

Мне удалось избавиться от множества команд $ find и операторов if, потому что мне больше не нужно искать конкретные идентификаторы HTML.

        function SelectedIndexChanged(sender,eventArgs)
        {
            var rcbID = sender.get_id();
            var LocID = rcbID.substring(0,37) + "Locale";
            pastCombo = currentCombo;
            currentCombo = eventArgs.get_item().get_text();

            if(editedRow != null)
            {
                var Location = $find(LocID);

Поскольку идентификаторы не былигенерируемый на стороне сервера (насколько я могу судить, хотя по общему признанию я не пробовал решение Роатина, потому что я думал о своем прежде, чем я видел его ответ + мой, казалось проще, так как я уже делаю кучу вещей на стороне клиентавнутри JavaScript), я посмотрел вокруг, чтобы увидеть, что я уже получал, и понял, что var rcbID = sender.get_id(); уже дает мне чрезвычайно похожее значение на то, что я уже искал (только вместо того, чтобы сказать SunLocale, он сказал SunActivity).

Итак, я подумал, эй, я могу использовать substring () для всего в rcbID, затем добавить к нему «Locale» и запустить команду $ find () для этогодля того, чтобы получить мне правильный RadComboBox.Оказывается, это работает.В любом случае, я благодарю вас, ребята, за то, что вы взялись за мою проблему, хотя в итоге я нашел свое собственное решение.: -)

0 голосов
/ 22 июля 2010
  • создайте какой-нибудь список на стороне сервера, чтобы отслеживать контрольные идентификаторы
  • , когда вы по какой-либо причине визуализируете страницу, запишите эти идентификаторы в блок скрипта (поместите их вмассив или что-то еще)
  • когда вам нужно отправить свои значения, вы можете использовать содержимое массива javascript для ссылки на элементы управления.

вам, возможно, придется проделать немного больше работы, чтобы найтиваши реальные ценности.для модных штанов Ingragistics они предоставляют специальный метод для получения информации о «контроле» в целом.Рад контроль может иметь что-то похожее.

...