eventos UserControl não funciona pela primeira vez
-
03-07-2019 - |
Pergunta
Eu estou chamando meu controle de usuário em uma página da web de forma dinâmica. Pela primeira vez, quando eu clico no botão no controle do usuário, o evento não está disparando. Quando clico no mesmo, pela segunda vez, os eventos estão disparando ..
Alguém pode me ajudar?
Solução
O ID de cliente do controle é derivada da ID de todos os controles que contenham que são marcados com o interface de INamingContainer . Então, certifique-se que controla todas na hierarquia tem um ID fixo.
Por exemplo, se você tem um controle Button dentro de um Repeater, o ID do botão e o repetidor são concatenados para fazer a identificação do cliente para o botão. Assim, tanto o repetidor eo botão deve ter o mesmo ID em postagens.
Você pode comparar o código HTML para a primeira solicitação com o HTML do segundo pedido para determinar rapidamente se esse é o problema.
Outras dicas
Parece que a conexão para o evento no botão OnClick não está ocorrendo em cada carregamento da página, o que é necessário.
Você pode garantir que a conexão está sendo executada quando você adicionar o controle e depois de um poastback para a página? Eu sempre coloco meus ganchos de eventos na Page_Init ou manipuladores de eventos Page_Load e fora de qualquer verificação de postback. Tente colocar um ponto de interrupção no manipulador de ligar e ver se o ponto de interrupção fica "hit" duas vezes.
Uma conexão de evento para um botão seria semelhante a:
protected void Page_Load(object sender, EventArgs e)
{
btnSearch.Click += new EventHandler(btnSearch_Click); // breakpoint on this line
}
Atribua um ID para o seu controle criado dinamicamente -. Caso contrário, nenhum evento será disparado
Você está esperando para o download de página inteira antes de pressionar o botão?
Os eventos são funções javascript escondidos por ASP.Net na página, que talvez não presentes no momento da sua clique.