2011-11-23 9 views
6

Hãy xem xét mã sau:Làm thế nào để kích hoạt UpdatePanel bằng điều khiển 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> 

Nút này sẽ kích hoạt bản cập nhật của bảng điều khiển. Tôi muốn kích hoạt một bản cập nhật bằng một keydown của trường tìm kiếm, vì vậy tôi 'faking' nó với một câu lệnh jQuery nhấn vào nút đó. Tôi tự hỏi ... phải có một cách tốt hơn ... đúng không !?

+0

Có thể điều này sẽ giúp bạn http://stackoverflow.com/questions/1009086/how-to-make-an-asp-net-textbox-fire-its-ontextchanged-event-fire-in-an -ajax-upd – coder

+0

@Khi trường tìm kiếm nằm ngoài bảng điều khiển cập nhật, điều này làm cho nó khác biệt với câu hỏi 1009086, bởi vì nếu tôi sử dụng tự động gửi trang sẽ được gửi. Có lẽ Remy là đúng và tôi nên viết kiểm soát của riêng tôi cho nó ... –

+0

Có Tôi cũng đồng ý.As tôi cũng ngay bây giờ làm việc trên cùng một điều có thể được ông quyền của mình. – coder

Trả lời

3

Bạn có thể làm điều này để làm mới updatepanel của bạn mà không cần nút:

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

Bạn chỉ cần cung cấp cho ID cập nhật của bạn một ID (updatePanel tại đây)

Thực thi mã đó trên khóa hoặc bất cứ khi nào bạn sẵn sàng.

+0

Nó gửi trang. Tôi muốn làm một bài viết AJAX trở lại mà không làm mới trang. –

+0

Không thể đặt <% %> thành thuộc tính OnKeyUp: ( –

+0

@ KeesC.Bakker: Chỉ cần đặt mã theo chức năng riêng biệt và gọi hàm đó trong khóa của bạn. –

1

Liên kết là một chút outdates, nhưng khá nhiều nên làm những gì bạn muốn:
http://remy.supertext.ch/2007/06/see-search-results-as-you-type-an-aspnet-ajax-control/

+0

Hm ... Tôi đã hy vọng. Net sẽ có một cái gì đó thông minh trong hộp công cụ của nó ... –

+0

Không phải là tôi biết, nhưng mã của tôi hiện khá nhiều những gì bạn cần, không? – Remy

+0

Vâng. Tôi muốn hợp nhất DelayedSubmitExtender và TextBox thành một trong những điều khiển, do đó, nó có thể làm việc cùng nhau như một lựa chọn kích hoạt. –