2015-09-23 47 views
0

使用下面的代碼,我成功地能夠顯示在Firefox和IE中的文本框自動完成列表,但它不顯示在谷歌鉻請幫助我。 數據庫中的數據正在成功檢索。我調試它,並沒有錯誤。AjaxControlToolkit AutoCompleteExtender列表不顯示在谷歌瀏覽器

<style type="text/css"> 


.AutoExtender 
{ 
    font-size: 12px; 
    color: #000; 
    padding: 3px 5px; 
    border: 1px solid #999; 
    background: #fff; 
    width: auto; 
    float: left; 
    z-index: 9999999999; 
    position:absolute; 
    margin-left:0px; 
    list-style: none; 
    font-weight: bold; 
} 
     .listItem { 
     color: #191919; 

     } 
     .itemHighlighted { 
     background-color: #ADD6FF;  
     } 
</style> 


<asp:TextBox ID="TextBox1" placeholder="SELECT * FROM TABLEA" class="enjoy-css" runat="server" autocomplete="off" TextMode="multiline"> 
      </asp:TextBox> 

     <asp:ScriptManager ID="ScriptManager1" runat="server"> 
     </asp:ScriptManager> 


    <AjaxControlToolkit:AutoCompleteExtender 
    runat="server" 
    ID="AutoCompleteExtender1" 
    BehaviorID="AutoCompleteExtender1" 
    TargetControlID="TextBox1" 
    ServiceMethod="AutoCompleteAjaxRequest" 
    ServicePath="AutoComplete.asmx" 
    MinimumPrefixLength="3" 
    CompletionInterval="100" 
    EnableCaching="true" 
    CompletionSetCount="100" 
    CompletionListCssClass="AutoExtender" 
    CompletionListItemCssClass="listItem" 
    FirstRowSelected="true" 
    CompletionListHighlightedItemCssClass="itemHighlighted" 
    DelimiterCharacters=";, :\n\r" 
    showonlycurrentwordincompletionlistitem="true" 
    > 
</AjaxControlToolkit:AutoCompleteExtender> 

自動完成網絡服務

public string[] AutoCompleteAjaxRequest(string prefixText, int count) 
    { 
     Match match; 

     match = Regex.Match(prefixText, "(\\w+)$"); 


     List<string> ajaxDataCollection = new List<string>(); 

     if (match.Success) 
     { 

      String Query = "SELECT TABLE_NAME FROM(select TABLE_NAME from INFORMATION_SCHEMA.COLUMNS UNION select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS) COLUMN_NAME WHERE TABLE_NAME like '%" +match.Value+"%';"; 
      DataTable dt = this.GetData(Query, CreateConnectionString(UserName, Password, DatabaseName, DataSource)); 
      if (dt.Rows.Count > 0) 
      { 
       int countt = dt.Rows.Count; 

       for (int i = 0; i < countt; i++) 
       { 
        ajaxDataCollection.Add(dt.Rows[i]["TABLE_NAME"].ToString()); 
       } 
      } 

       ajaxDataCollection.Add("SELECT"); 
       ajaxDataCollection.Add("WHERE"); 
       ajaxDataCollection.Add("UPDATE"); 
       ajaxDataCollection.Add("INSERT"); 
       ajaxDataCollection.Add("DELETE"); 
       ajaxDataCollection.Add("EXEC"); 
       ajaxDataCollection.Add("FROM"); 
       ajaxDataCollection.Add("VALUES"); 
       ajaxDataCollection.Add("HAVING"); 

      return ajaxDataCollection.ToArray(); 
     } 

回答

0

我刪除了AjaxControlToolKit的dll文件,並使用Nuget再次安裝它,它的工作......我想下載/引用先前的dll文件時出錯了。

0

這些都是幾點我在代碼中觀察到:

添加以下的自動完成網絡服務,使您的Web服務方法static

[System.Web.Script.Services.ScriptMethod] 
[System.Web.Services.WebMethod] 

public static string[] AutoCompleteAjaxRequest(string prefixText, int count) 
+0

我已經在做這個..我沒有發佈整個Web服務的代碼,並且只發布了AutoCompleteExtender使用的服務方法。 –

+0

我會嘗試使靜態方法 –

+0

yes是爲服務方法添加這些也''[System.Web.Script.Services.ScriptMethod] [System.Web.Services.WebMethod]' – Webruster

相關問題