2012-10-11 21 views
5

Cách tiếp cận tốt nhất để nắm bắt sự kiện chọn AutoCompleteExtender là gì, vì điều khiển không có sự kiện này?Phát hiện AutoCompleteExtender select event

Đây là mẫu tôi đang nói đến. Tôi có hai texboxes (Location1TextBox, Location2TextBox) với các điều khiển AutoCompleteExtender được liên kết. Phần này hoạt động tốt. Bây giờ vấn đề là khi người dùng thực hiện lựa chọn hình thức bất kỳ AutoCompleteExtender tôi cần phải nắm bắt sự kiện này và cố gắng để tính toán khoảng cách giữa location1 và location2. Kết quả sẽ được điền vào DistanceTextBox một cách tự động. Bất kỳ sugesstions tốt? Tôi chỉ hy vọng nó sẽ không kết thúc với onchange sự kiện cho textbox ...

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

Trả lời

6

Bạn có thể loại bỏ AutoPostBack="true" từ một textbox mục tiêu, đăng ký về sự kiện TextChanged và sử dụng chức năng dưới đây như trình điều khiển cho itemSelected mở rộng của sự kiện khách hàng OnClientItemSelected="autoCompleteEx_ItemSelected":

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

Yuriy bạn đã lưu lại ngày của mình! Đây chính xác là những gì tôi đang tìm kiếm, tốt đẹp và thông minh! :) –