Pergunta

Eu tenho a forma asp.net que contém campos. Quando acessar esta janela, minhas funções JavaScript podem acessar os campos através do método DOM com o getElementById () e quando pulo no servidor, estou recebendo as atualizações feitas pelo cliente.

No entanto, quando inicio o formulário como uma janela infantil usando o controle RadWindow da Telerik, o JavaScript não pode acessar os campos ocultos no formulário filho. Em vez disso, fico nulo.

Minhas perguntas são:

  1. Os campos ocultos em uma janela infantil não são acessíveis quando a janela é iniciada a partir de um formulário de ASP.NET pai?
  2. Alguém já tentou isso com os controles de Telerik e terminou em problemas?

EDITARCraig apontou que o ID pode ser diferente. Duas perguntas adicionais então:

  1. Você pode garantir que o ID que você atribua no servidor seja realmente usado?
  2. O uso do getElementByName () é um mecanismo melhor para acessar elementos DOM?
Foi útil?

Solução

Para obter o ID do seu controle ASP.NET, faça algo assim:

<%= theControl.ClientID %>

getElementByName não é tão comumente usado como getElementById. O atributo de identificação deve ser único para cada elemento na página, enquanto o atributo de nome pode ser duplicado.

Outras dicas

É bem possível que o ID do elemento não seja o que você acha que é. Verifique a página renderizada e veja se o ID está lá. Acho que a página recebe um ID diferente, pois é renderizado dentro de outro controle.

Se for esse o caso, você pode fazer com que o formulário renderize algum script que retorne o ID do elemento acessando o ID do cliente de controles.

David, estou enviando essa resposta porque vi o mesmo problema no meu código, e a única solução real que encontrei foi que eu tinha que apoiar a função "OnClick" em dois lugares ... No meu caso, eu estava usando Petersdatepackage, mas estava em uma tira do Telerik Rad.

No meu caso, o controle estava em uma página .ascx, e o código JS foi o seguinte:

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()];
}

Mas isso em si não foi suficiente. Eu tive que adicionar esse código à página pai. A página que contém os controles da tira Telerik.

// Dummy function?
function OnIncidentDateChange()
{
}

Depois que eu fiz isso, funcionou ...

Não tenho certeza do porquê, para lhe dizer a verdade, e não faz sentido para mim, e pode ser apenas um problema com o pacote PDP ...

Eu uso getElementsByName para caixas de seleção no mesmo grupo.

Quanto ao ID do controle, o Tonyb tem a idéia certa, mas certifique -se de se referir à propriedade ClientID no manipulador de eventos do Prerender, porque se você o fizer muito cedo no ciclo de vida da página, ainda não estará disponível).

É possível que o JavaScript esteja tentando obter uma referência ao campo oculto antes que o Radwindow o carregue? Acredito que já encontrei isso antes e tive que usar o Settimeout para contornar o problema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top