2016-04-26 12 views
0

Ich möchte Postback auf jedem Tastendruck/textchanged-Ereignis in Textfeld, aber mein Javascript wird nicht ausgeführt. Fehle ich etwas ... ????Postback-Ereignis auf Text geändert Ereignis

Meine Html Textbox ist dies:

<asp:TextBox ID="Txt_Search" runat="server" AutoCompleteType="Disabled" 
    onkeypress="Postback();" OnTextChanged="Txt_Search_TextChanged" AutoPostBack="true"> 
</asp:TextBox> 

Mein Javascript-Code ist dies:

function Postback() { 
    __doPostBack('<%= Txt_Search.ClientID %>', ''); 
}; 

Meine auf Textchanged-Ereignis ist dies:

protected void Txt_Search_TextChanged(object sender, EventArgs e) 
    { 
     FolderStructure.Nodes.Clear(); 
     Searchtxt(); 
    } 
+0

Haben Sie die Page.IsPostback-Methode verwendet? –

+0

@rootturk Ein textchanged-Ereignis tritt auf, wenn der Fokus aus dem Textfeld entfernt wird. Ich möchte auf jedes eingegebene Keyword antworten. Wie hilft mir Page.ispostback ... ????? –

+0

Es ist keine gute Idee, für jeden Tastendruck in ASP.NET Web Forms ein Postback zu geben, es sei denn, Sie tun etwas mit AJAX. – Thangadurai

Antwort

0

I Beispielprojekte ASP.NET WebForms und AJAX erstellen.

Ich schlage vor, Sie können AJAX-Prozess. NET Generic Handler-Datei verwenden. Bitte recherchieren Sie über Generic Handler Datei.

Bevor Sie Generic Handler-Datei "Search.ashx" erstellen und über dem Code einfügen.

  public void ProcessRequest(HttpContext context) 
    { 

     var search = HttpContext.Current.Request.Form["term"]; 

     //Dummy Data 
     List<string> searchList = new List<string> { "Red", "Orange", "Ping", "Blue", "White", "Black" }; 

     string result = string.Empty; 

     if (!string.IsNullOrEmpty(search)) 
     { 
      searchList = searchList.Where(x => x.ToLower().Contains(search.ToLower())).ToList(); 

      if (searchList != null && searchList.Count() > 0) 
      { 
       foreach (var item in searchList) 
       { 

        result += "<li>" + item + "</li>"; 

       } 
      } 
     } 
     else 
     { 
      result="<li> Not Found </li>"; 
     } 
     context.Response.ContentType = "text/plain"; 
     context.Response.Write(result); 
    } 

    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 

und erstellen Sie Ihre Suchseite, YourFile.aspx, mein Dateiname Search.aspx.

ASPX Seite Code:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication7.Default" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <input type="text" id="txtSearch" class="js-search" value="Search" /> 

     <div class="searchResult"> 
      <ul> 


      </ul> 
     </div> 

    </div> 
    </form> 

    <script src="https://code.jquery.com/jquery-2.2.3.min.js" type="text/javascript"></script> 

    <script> 

     $(function() { 
      $(".js-search").on('keyup', function() { 

       var term = $('.js-search').val(); 
       if (term.length > 2) { 
        sendSearchRequest({ "term": term }); 
       } 
      }); 

      function sendSearchRequest(value) { 

       var datas = $.ajax({ 
        type: "POST", 
        url: '/Search.ashx', 
        cache: false, 
        async: false, 
        data: value, 
        success: function (term) { 
         $('.searchResult').empty(); 
         $('.searchResult').append(term); 
        } 

       }); 

      } 
     }); 
    </script> 
</body> 
</html> 

Dieses Beispiel, wenn alle drei Buchstaben senden Ajax-Request search.ashx Datei eingegeben und das Suchwort enthält und auf Suchseite Ergebnis.

Ich hoffe, dass hilft.

0

Ändern Code wie unten und Scheck

__doPostBack('Txt_Search', ''); 
+0

Nein, es läuft nicht. –

0

Hier ist Demo für dynamische Suche in asp.net.

Ihre Textbox sollte sein:

<asp:TextBox ID="PopertyName" placeholder="Property Name" href="#" 
           propertyid="" runat="server" class="dropdownAnchor" 
           autocomplete="off" onkeydown="SearchProperty()"></asp:TextBox> 

hier nennen wir eine Funktion searchProperty() onkeydown Ereignis genannt.

so ist, sollten Sie Ihre Ajax, sein

function SearchProperty() {        
         $.ajax({ 
          url: '<%=Page.ResolveUrl("~/Dashboard/NewDashboard.aspx/GetProperty") %>', 
          data: "{ 'prefix': '" + $("#PopertyName").val() + "'}", 
          dataType: "json", 
          type: "POST", 
          contentType: "application/json; charset=utf-8", 
          success: function (data) { 
           //Your code to bind result that received from your back end. 
          }, 
          error: function (response) { 
           alert(response.responseText); 
          }, 
          failure: function (response) { 
           alert(response.responseText); 
          } 
         }); 
        }; 

diese Funktion auf newDashboard.aspx.cs Datei eine GetPoprty() -Methode aufrufen.

so mein Back-End-Methode ist,

[WebMethod] 
public static List<Model.Property> GetProperty(string prefix) 
{ 
    // Here you get your text in prefix 
} 
Verwandte Themen