2008-10-09 111 views
3

爲什麼我會得到一個返回未定義的變量列表的文本框?爲什麼我的ASP.NET AutoCompleteExtender返回undefined?

當我運行這段代碼:

var query = (from tisa in db.TA_Info_Step_Archives 
       where tisa.ta_Serial.ToString().StartsWith(prefixText) 
       select tisa.TA_Serial.ToString()).Distinct().Take(Convert.ToInt32(count)); 

return query.ToList<string>().ToArray(); 

我得到這個XML文件:

<string>200700160</string> 
    <string>200700161</string> 
    <string>200700162</string> 
    <string>200700163</string> 
    <string>200700164</string> 
    <string>200700170</string> 
    <string>200700171</string> 
    <string>200700172</string> 
    <string>200700173</string> 
    <string>200700174</string> 
    <string>200700175</string> 
    <string>200700176</string> 
    <string>200700177</string> 
    <string>200700178</string> 
    <string>200700179</string> 
    <string>200700180</string> 
    <string>200700181</string> 
    <string>200700182</string> 
    <string>200700183</string> 
    <string>200700184</string> 

,但文本框返回的undefined列表....

幫助嗎?

回答

4

更新了我的AJAX工具包1.0.10920版本則改變了我的代碼如下:

 foreach (DataRow dr in dt.Rows) 
     { 
      items.SetValue("\"" + dr["somenumber"].ToString() + "\"", i); 
      i++; 
     } 

上週五晚上與.NET不好玩。我沒有生命。 :-P

+0

我有同樣的問題。似乎在ServiceMethod返回的項目周圍添加引號會有訣竅。 – 2015-01-20 20:54:10

0

這聽起來像這個問題是不是與方法,而是用你的方式是掛鉤的自動完成的方法...是類似於以下的擴展:

<cc1:AutoCompleteExtender ID="Result" runat="server" TargetControlID="txtSearch" ServiceMethod="YourMethodHere" 
    ServicePath="~/Service/YourWebServiceHere.asmx"  CompletionInterval="500" 
    EnableCaching="false" CompletionListCssClass="AutoComplete_List" CompletionSetCount="10"> 
</cc1:AutoCompleteExtender> 
0

的問題我看到的是,AJAX庫正在將數字視爲整數。它需要將它們視爲字符串。

我已經將它轉換爲一個字符串,但什麼也沒有。我必須在數字中添加某種字符,以便將它們的值看作字符串。這是一件可怕的事情。但是在自動完成擴展器.js文件的AJAX庫中,它們並不尋找整數。他們只尋找需要查看的琴絃,因爲他們的建築方式是有缺陷的...

Scott。

+0

如果你直接打電話,你會從服務中得到什麼? – Bryant 2008-10-09 21:42:18

0

我遇到了同樣的問題。我同意這個問題肯定似乎是因爲我們在這裏使用數字而引起的。只要我將一個alpha附加到數組項的結尾,它就可以工作。 我相信我們發現了一個錯誤。

這踢了undefineds ....

... 
da.Fill(dt); 
     string[] items = new string[dt.Rows.Count]; 
     int i = 0; 
     foreach (DataRow dr in dt.Rows) 
     { 
      items.SetValue(Convert.ToString(dr["somenumber"]), i); 
      i++; 
     } 
... 

哪裏,因爲這加載列表就好

... 
da.Fill(dt); 
     string[] items = new string[dt.Rows.Count]; 
     int i = 0; 
     foreach (DataRow dr in dt.Rows) 
     { 
      items.SetValue(Convert.ToString(dr["somenumber"]+"foo"), i); 
      i++; 
     } 
... 

好像對我的錯誤。

1

我嘗試下面的代碼和它的工作對我來說:

items.SetValue("'"+dr["somenumber"]+"'", i); 
0

有工具箱DLL版本之間的差異。

在更新後的版本中,不需要插入「'」+ +「'」,它工作正常。在版本1.0.10920中,它是必需的。

0

http://www.asp.net/ajax 在這個上面的鏈接你會發現AjaxControllToolkit只是下載它並在我的應用程序中添加引用,我相信它會正常工作。問題是你正在使用非常古老的AjaxControllToolkit,所以它不能工作,使用AjaxControllToolkit 3.5或4.0。