2011-11-23 10 views
6

Rozważmy następujący kod:Jak wywołać UpdatePanel przez formant 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> 

Przycisk wywoła aktualizacji panelu. Chciałem wyzwalać aktualizację kluczem kluczowym w polu wyszukiwania, więc "fałszuję" je za pomocą instrukcji jQuery, która klika przycisk. Zastanawiam się ... musi być lepsza droga ... prawda !?

+0

Może to ci pomóc http://stackoverflow.com/questions/1009086/how-to-make-an-asp-net-textbox-fire-its-ontextchanged-event-fire-in-an-an-an- -ajax-upd – coder

+0

@Kiran pole wyszukiwania znajduje się poza panelem aktualizacji, co powoduje, że jest ono różni się od pytania 1009086, ponieważ jeśli użyję funkcji automatycznego przesyłania, strona zostanie przesłana. Może Remy ma rację i powinienem napisać na to moją własną kontrolę ... –

+0

Tak, ja też się zgadzam. Ponieważ ja też teraz pracuję nad tym samym, może on jest jego prawem. – coder

Odpowiedz

3

Można to zrobić, aby odświeżyć UpdatePanel bez przycisku:

<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"> 

Wystarczy Podaj swój updatepanel ID (updatePanel tutaj)

Wykonaj ten kod na klawiaturze lub gdy tylko będziesz gotowy.

+0

Przesyła stronę. Chciałbym zrobić post AJAX, który nie powoduje odświeżania strony. –

+0

Okazuje się, że <% %> nie można ustawić na właściwość OnKeyUp :( –

+0

@ KeesC.Bakker: Po prostu umieść kod w oddzielnej funkcji i wywołaj tę funkcję w swoim kluczu .. –

1

Link jest nieco deaktualizuje, ale należy dość dużo zrobić, co chcesz:
http://remy.supertext.ch/2007/06/see-search-results-as-you-type-an-aspnet-ajax-control/

+0

Hm ... Miałem nadzieję, że .Net będzie miał coś sprytnego w swojej skrzynce narzędziowej ... –

+0

Nie to, że wiem, ale mój kod robi prawie to, czego potrzebujesz, nie? – Remy

+0

Tak. Chciałbym połączyć DelayedSubmitExtender i TextBox w jeden z elementów sterujących, aby mógł działać razem jako opcja wyzwalacza. –