2012-10-11 17 views
5

¿Cuál es el mejor enfoque para capturar evento de selección de AutoCompleteExtender, ya que el control no tiene este evento?Detectar evento de selección de AutoCompleteExtender

Aquí está la muestra de la que estoy hablando. Tengo dos texboxes (Location1TextBox, Location2TextBox) con controles vinculados de AutoCompleteExtender. Esta parte funciona bien. Ahora el problema es cuando el usuario hace la selección de cualquier AutoCompleteExtender. Necesito detectar este evento e intentar calcular la distancia entre location1 y location2. El resultado debe rellenarse en DistanceTextBox de forma automática. ¿Alguna buena sugerencia? Sólo espero que no terminaría con onchange caso de cuadros de texto ...

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

Respuesta

6

Es posible eliminar AutoPostBack="true" de un cuadro de texto de destino, en caso de suscribirse TextChanged y la función utilizar a continuación como controlador para el evento de clientes de itemSelected extensor OnClientItemSelected="autoCompleteEx_ItemSelected":

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

¡Yuriy me salvaste el día! Esto es exactamente lo que estaba buscando, agradable y efectivo. :) –

Cuestiones relacionadas