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?

Foi útil?

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.

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