Pergunta

Espero sentir falta de algo extremamente óbvio aqui, mas para a minha vida, não consigo descobrir isso.

eu tenho um AutoCompleteBox Controle que está recuperando resultados por meio de uma chamada assíncrona, embora eu não consiga encontrar uma maneira confiável de saber quando um usuário selecionou uma opção da lista de valores retornados. Eu tentei amarrar no SelectionChanged Evento, mas isso dispara em todos os movimentos da lista suspensa do AutoComplete, quando o que eu realmente quero saber é quando um usuário disse definitivamente: "Ei, esse é o item que eu quero!" Ao clicar nele, ou selecionando -o com a tecla de retorno.

Qualquer conselho seria muito apreciado, pois isso está começando a me deixar um pouco louco agora. =)

Obrigado

Ps o SelectionChanged Os argumentos do evento fornecem AddedItems e RemovedItems, mas não dê nenhuma indicação direta do tipo de seleção que estou procurando.

Foi útil?

Solução

Não existe um evento específico que indique que o usado tenha sido especificamente atingido por uma opção, em vez de apenas navegar.

Para você o cenário, o mais próximo que você pode obter é DropDownClosed ou até LostFocus Eventos então acesse o SelectedItem propriedade.

Outras dicas

Se você estiver usando o Telerik AutoCompleteBox, talvez o evento "Onentryadded" seja o que você está procurando. Vejo que essa pergunta foi feita há mais de 4 anos, então talvez esse evento não existisse naquela época. Acabei de atualizar para a atualização mais recente do Telerik Controls (Q2 2014). Aqui está um exemplo rápido. Eu removi as propriedades que não estamos discutindo aqui para limpá -lo, mas, obviamente, elas precisarão ser adicionadas de volta, a menos que você as configure no código (por exemplo, DataSourceId).

Página de origem:

<telerik:RadAutoCompleteBox ID="RadAutoCompleteBox1" runat="server" OnEntryAdded="RadAutoCompleteBox1_EntryAdded" >
</telerik:RadAutoCompleteBox>

Código de teste (em VB):

   Protected Sub RadAutoCompleteBox1_EntryAdded(sender As Object, e As AutoCompleteEntryEventArgs)
        MsgBox(e.Entry.Text)   'This is just to show you the DataValueField in your dev 
        MsgBox(e.Entry.Value)  'This is just to show you the DataTextField in your dev
        racbCustomer.Entries.Clear()  'This will wipe out the selection(s)
   End Sub
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top