2013-06-03 139 views
2

我嘗試使用AutoCompleteExtender,但它不起作用。我使用ajaxToolkit和Web服務文件。他們都沒有錯誤。我認爲腳本可能是錯誤的,請給我建議修復。asp.net ajaxtoolkit自動完成不起作用

< ajaxToolkit:AutoCompleteExtender 
          runat="server" 
          BehaviorID="AutoCompleteEx" 
          ID="autoComplete1" 
          TargetControlID="TextBox" 
          ServicePath="AutoComplete.asmx" 
          ServiceMethod="GetCompletionList" 
          MinimumPrefixLength="2" 
          CompletionInterval="1000" 
          EnableCaching="true" 
          CompletionSetCount="20" 
          CompletionListCssClass="autocomplete_completionListElement" 
          CompletionListItemCssClass="autocomplete_listItem" 
          CompletionListHighlightedItemCssClass="autocomplete_highlightedListItem" 
          DelimiterCharacters=";, :" 
          OnClientShowing="true" > 
            <Animations> 
           <OnShow> 
            <Sequence> 

             <OpacityAction Opacity="0" /> 
             <HideAction Visible="true" /> 


             <ScriptAction Script=" 
              // Cache the size and setup the initial size 
              var behavior = $find('AutoCompleteEx'); 
              if (!behavior._height) { 
               var target = behavior.get_completionList(); 
               behavior._height = target.offsetHeight - 2; 
               target.style.height = '0px'; 
              }" /> 


             <Parallel Duration=".4"> 
              <FadeIn /> 
              <Length PropertyKey="height" StartValue="0" EndValueScript="$find('AutoCompleteEx')._height" /> 
             </Parallel> 
            </Sequence> 
           </OnShow> 
           <OnHide> 

            <Parallel Duration=".4"> 
             <FadeOut /> 
             <Length PropertyKey="height" StartValueScript="$find('AutoCompleteEx')._height" EndValue="0" /> 
            </Parallel> 
           </OnHide> 
          </Animations> 
          </ajaxToolkit:AutoCompleteExtender> 

AutoComplete.asmx:

public string[] GetCompletionList(string prefixText, int count) 
    { 


     SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["U"].ToString()); 
     DataSet ds = new DataSet(); 
     DataTable dt = new DataTable(); 

     SqlCommand cmd = new SqlCommand(); 
     cmd.Connection = cn; 
     cmd.CommandType = CommandType.Text; 

     cmd.CommandText = "select * from Stoc WITH (NOLOCK) where KeySentences like @myParameter"; 
     cmd.Parameters.AddWithValue("@myParameter", "%" + prefixText + "%"); 
     try 
     { 
      cn.Open(); 
      cmd.ExecuteNonQuery(); 
      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      da.Fill(ds); 
     } 
     catch (Exception ex) 
     { 

     } 
     finally 
     { 
      cn.Close(); 
     } 
     dt = ds.Tables[0]; 

     //Then return List of string(txtItems) as result 
     List<string> txtItems = new List<string>(); 
     String dbValues; 

     foreach (DataRow row in dt.Rows) 
     { 
      //String From DataBase(dbValues) 
      dbValues = row["KeySentences"].ToString(); 
      dbValues = dbValues.ToLower(); 
      txtItems.Add(dbValues); 

     } 

     return txtItems.ToArray(); 

    } 

謝謝您的回答..

+0

你確定沒有錯誤嗎?你確定你收到任何數據嗎?這個空的「catch」塊可能會導致你錯過正在發生的任何錯誤。設置一個斷點,看看你是否在「catch」塊中得到錯誤,如果沒有,你是否從數據庫調用中得到任何迴應。 – jadarnel27

+0

打開Chrome的開發工具'** console **並查看,是否有任何錯誤? –

回答

0

我對這個性質我ajaxtoolkit4.5誤差測試。

OnClientShowing="true"

不確定你想要做什麼,但爲我刪除這項工作。 (我通過刪除數據庫連接和工作來複制你的代碼)