2011-11-23 8 views
6

Si consideri il seguente codice:Come attivare un UpdatePanel con un controllo TextBox?

<label>Search:</label><asp:TextBox runat="server" ID="search" ClientIDMode="Static" OnKeyUp="$('#searchButton').click();" /><asp:Button runat="server" ID="searchButton" ClientIDMode="Static" /> 
<asp:UpdatePanel runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <asp:GridView runat="server" DataSourceID="EntityDataSource1" 
      AllowPaging="True" AllowSorting="True" AutoGenerateColumns="true" PageSize="20" 
      Width="400" /> 
    </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="searchButton" /> 
    </Triggers> 
</asp:UpdatePanel> 

Il pulsante attiverà un aggiornamento del pannello. Volevo attivare un aggiornamento da un keydown del campo di ricerca, quindi lo sto 'fingendo' con una dichiarazione jQuery che fa clic sul pulsante. Mi chiedo ... ci deve essere un modo migliore ... giusto !?

+0

Questo potrebbe essere d'aiuto http://stackoverflow.com/questions/1009086/how-to-make-an-asp-net-textbox-fire-its-ontextchanged-event-fire-in-an -ajax-upd – coder

+0

@Kiran il campo di ricerca è al di fuori del pannello di aggiornamento, il che lo rende diverso da quella domanda 1009086, perché se utilizzo un invio automatico la pagina verrà inviata. Forse Remy ha ragione e dovrei scrivere il mio controllo per questo ... –

+0

Sì, anch'io sono d'accordo. Come sto anche adesso sto lavorando sulla stessa cosa potrebbe essere lui il suo diritto. – coder

risposta

3

Si può fare questo per rinfrescare la vostra UpdatePanel, senza il pulsante:

<script type="text/javascript"> 

    function refreshPanel() { 
     __doPostBack('<%= updatePanel.UniqueID %>', ''); 
    } 

</script> 
<label>Search:</label> 
<asp:TextBox runat="server" ID="search" 
       ClientIDMode="Static" OnKeyUp="refreshPanel();" /> 
<asp:UpdatePanel runat="server" ID="updatePanel"> 

Hai solo bisogno di date al vostro updatepanel un ID (updatePanel qui)

Eseguite quel codice su un keyup o quando siete pronti per questo.

+0

Invia la pagina. Mi piacerebbe fare un post AJAX che non causa alcun aggiornamento della pagina. –

+0

Non è possibile impostare <% %> sulla proprietà OnKeyUp :( –

+0

@ KeesC.Bakker: basta inserire il codice in una funzione separata e chiamare tale funzione nella chiave. –

1

Il collegamento è un po 'outdates, ma dovrebbe praticamente fare ciò che si vuole:
http://remy.supertext.ch/2007/06/see-search-results-as-you-type-an-aspnet-ajax-control/

+0

Hm ... speravo .Net avrebbe avuto qualcosa di intelligente nella sua cassetta degli attrezzi ... –

+0

Non lo so, ma il mio codice fa più o meno quello che ti serve, no? – Remy

+0

Sì. Vorrei unire il DelayedSubmitExtender e il TextBox a uno di controllo, in modo che possa funzionare insieme come opzione di attivazione. –