.net acordeão Causando me Problemas
-
22-08-2019 - |
Pergunta
Eu tinha um monte de controles que eu exibida, escondido, ativado e desativado com base em ações na página da web. Tudo funcionou até que eu colocá-los em um accordian. Agora eu não posso obter o Javascript para ser capaz de atualizar seu estado. Eu tenho um pequeno exemplo
Este é o Javascript
<script type="text/javascript">
var ctrl = document.getElementById('<%= btmRocp.ClientID %>');
function ShowPanel(control)
{
alert('<%= btmRocp.ClientID %>');
ctrl.disabled = true;
}
</script>
Este é o Accordian
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<cc1:Accordion ID="MyAccordion"
runat="Server"
SelectedIndex="0"
>
<Panes>
<cc1:AccordionPane ID="accordianPane0" runat=server>
<Header>Create New Report </Header>
<Content>a
<asp:Button ID="Button1" onmouseup="ShowPanel('') " runat="server" Text="Button" />
<asp:Button ID="btmRocp" runat="server" Text="Button" />
</Content>
</cc1:AccordionPane>
<cc1:AccordionPane ID="accordianPane1" runat=server>
<Header>Create New Report </Header>
<Content>b</Content>
</cc1:AccordionPane>
</Panes>
</cc1:Accordion>
Eu gostaria de saber o que estou fazendo de errado aqui as impressões alerta o ID direita.
Se eu faço algo onde eu passar o "presente" objeto para a função que eu posso desativar esse botão, mas eu realmente preciso dele para desativar, ou esconder como 10 objetos
Alguém tem uma idéia?
Exemplo de código em http://www.riconllc.com/accordian.zip
Solução
Qual é o estado padrão do acordeão? desabou? Eu não tenho nenhuma idéia de como o acordeão funciona, mas estou suspeitar que ele está modificando o HTML DOM tal que quando a página é carregada pela primeira vez "btmRocp" não está realmente presente na própria página, até que se torna "visível". Ou seja, ele pode ser a injeção controles para dentro e fora da página, com base no status acordeão.
Sua melhor aposta em descobrir esse comportamento é inserir "debugger"; declarações em sua página em pontos apropriados, para inspecionar o DOM ao vivo naqueles pontos no tempo.
<textbox id="debugbox" onblur="this.value = eval(this.value);"></textbox>
É uma boa maneira de macaco com script em sua página também.