2012-10-11 6 views
5

Was ist der beste Ansatz, um AutoCompleteExtender Select-Ereignis zu erfassen, da Kontrolle dieses Ereignis nicht hat?Erkennen von AutoCompleteExtender Wählen Sie Ereignis

Hier ist Beispiel, über das ich spreche. Ich habe zwei Texboxen (Location1TextBox, Location2TextBox) mit verknüpften AutoCompleteExtender-Steuerelementen. Dieser Teil funktioniert gut. Jetzt ist das Problem, wenn Benutzer Form AutoCompleteExtender macht, die ich brauche, um dieses Ereignis zu fangen und zu versuchen, Entfernung zwischen location1 und location2 zu berechnen. Das Ergebnis sollte automatisch in DistanceTextBox eingetragen werden. Irgendwelche guten Fragen? Ich hoffe nur, es wäre nicht mit OnChange-Ereignisse für Textfelder am Ende ...

<asp:UpdatePanel ID="UpdatePanel2" runat="server"> 
     <ContentTemplate> 
      <asp:Label ID="TitleLabel" runat="server" Text='<% $resources:AppResource,LocationStart %>' 
       CssClass="OneColumnLabel"></asp:Label>:<br /> 
      <asp:TextBox ID="Location1TextBox" runat="server" CssClass="TwoColumnMiddleLongText" 
       ValidationGroup="Edit" AutoPostBack="true"></asp:TextBox>* 
      <asp:RequiredFieldValidator ID="TitleRequiredFieldValidator" runat="server" ControlToValidate="Location1TextBox" 
       Display="None" ErrorMessage='<% $resources:AppResource,LocationRequired %>' ValidationGroup="Edit"></asp:RequiredFieldValidator> 
      <ajaxToolkit:AutoCompleteExtender runat="server" ID="AutoCompleteExtender1" TargetControlID="Location1TextBox" 
       ServiceMethod="GetCompletionList" ServicePath="TravelOrder.aspx" MinimumPrefixLength="1" 
       CompletionInterval="300" UseContextKey="True"> 
      </ajaxToolkit:AutoCompleteExtender> 
      <asp:Label ID="Label7" runat="server" Text='<% $resources:AppResource,LocationArrival %>' 
       CssClass="OneColumnLabel"></asp:Label>:<br /> 
      <asp:TextBox ID="Location2TextBox" runat="server" CssClass="TwoColumnMiddleLongText" 
       ValidationGroup="Edit"></asp:TextBox>* 
      <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="Location2TextBox" 
       Display="None" ErrorMessage='<% $resources:AppResource,LocationRequired %>' ValidationGroup="Edit"></asp:RequiredFieldValidator> 
      <ajaxToolkit:AutoCompleteExtender runat="server" ID="AutoCompleteExtender2" TargetControlID="Location2TextBox" 
       ServiceMethod="GetCompletionList" ServicePath="TravelOrder.aspx" MinimumPrefixLength="1" 
       CompletionInterval="300" UseContextKey="True"> 
      </ajaxToolkit:AutoCompleteExtender> 
      <asp:Label ID="Label8" runat="server" Text='<% $resources:AppResource,Distance %>' 
       CssClass="OneColumnLabel"></asp:Label>:<br /> 
      <asp:TextBox ID="DistanceTextBox" runat="server" CssClass="OneColumnText" ValidationGroup="Edit"></asp:TextBox>* 
      <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="DistanceTextBox" 
       Display="None" ErrorMessage='<% $resources:AppResource,DistanceRequired %>' ValidationGroup="Edit"></asp:RequiredFieldValidator> 
     </ContentTemplate> 
    </asp:UpdatePanel> 

Antwort

6

Sie AutoPostBack="true" von einem Ziel Textbox entfernen, auf Textchanged Ereignisse abonnieren und Funktion unten als Handler für itemSelected Extender Client-Ereignis OnClientItemSelected="autoCompleteEx_ItemSelected":

<script type="text/javascript"> 
    function autoCompleteEx_ItemSelected(sender, args) { 
      __doPostBack(sender.get_element().name, ""); 
    } 
</script> 
+0

Yuriy Sie haben meinen Tag gerettet! Genau das habe ich gesucht, schön und effektiv! :) –