2008-10-13 2 views
1

У меня есть форма asp.net, которая содержит поля. Когда я обращаюсь к этому окну, мои функции javascript могут обращаться к полям через DOM с помощью метода getElementById(), и когда я отправляю почтовые сообщения на сервер, я получаю обновления, сделанные клиентом.Скрытые поля на дочернем окне недоступны из родительского окна

Однако, когда я запускаю форму как дочернее окно с помощью элемента управления RadWindow от Telerik, javascript не может получить доступ к скрытым полям дочерней формы. Вместо этого я получаю null.

Мои вопросы:

  1. скрыты поля на дочернем окне не доступна, когда окно запущен из формы asp.net родителя?
  2. Кто-нибудь пытался это с помощью элементов управления Telerik и столкнуться с проблемами?

EDIT Крейг отметил, что идентификатор может отличаться. Еще два вопроса:

  1. Можете ли вы убедиться, что идентификатор, назначенный на сервере, фактически используется?
  2. Использует getElementByName() лучший механизм доступа к элементам DOM?

ответ

1

Чтобы получить идентификатор элемента управления asp.net сделать что-то вроде этого:

<%= theControl.ClientID %> 

getElementByName не так широко используется в качестве getElementById. Атрибут ID должен быть уникальным для каждого элемента на странице, тогда как атрибут name может быть дублирован.

1

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

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

+0

Спасибо за ответ - я собираюсь проверить это. – 2008-10-13 22:57:09

0

Я использую getElementsByName для флажков в пределах одной группы.

Что касается идентификатора элемента управления, то у TonyB есть правильная идея, но убедитесь, что вы ссылаетесь на свойство ClientID в обработчике событий PreRender, потому что, если вы сделаете это слишком рано в жизненном цикле страницы, он пока не будет доступен).

0

Возможно ли, что javascript пытается получить ссылку на скрытое поле до того, как RadWindow загрузил его? Я считаю, что я столкнулся с этим раньше и должен был использовать setTimeout, чтобы обойти эту проблему.

1

David, я посылаю вам этот ответ, потому что я видел ту же проблему в своем коде, и единственное РЕАЛЬНОЕ решение, которое я нашел, было то, что мне пришлось поддерживать функцию «OnClick» в двух местах ... В моем случае , Я использовал PetersDatePackage, но это было на Telerik RAD Strip.

В моем случае, контроль был на странице .ascx, а код JS следующим образом:

function OnIncidentDateChange(ctrl, dtDate, bErr) 
{ 
    var weekday = new Array(7); 
    weekday[0] = "Sunday"; 
    weekday[1] = "Monday"; 
    weekday[2] = "Tuesday"; 
    weekday[3] = "Wednesday"; 
    weekday[4] = "Thursday"; 
    weekday[5] = "Friday"; 
    weekday[6] = "Saturday"; 

    <%=LabelDayOfWeek.ClientID %>.innerText = weekday[dtDate.getDay()]; 
} 

Но это само по себе не было достаточно.Мне пришлось добавить этот код на родительскую страницу. Страница, содержащая элементы управления для полосы Telerik.

// Dummy function? 
function OnIncidentDateChange() 
{ 
} 

После того, как я сделал это, он работал ...

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

+0

Спасибо Ларри - я ценю это! – 2009-01-14 12:50:30

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