为什么我的ASP.NET AutoCompleteExtender返回未定义

本文关键字:返回 未定义 AutoCompleteExtender NET 我的 ASP 为什么 | 更新日期: 2023-09-27 17:48:52

为什么我得到一个返回未定义变量列表的文本框?

当我运行此代码时:

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…的列表。。。。

请帮忙?

为什么我的ASP.NET AutoCompleteExtender返回未定义

将我的ajax工具包更新到1.0.10920版本,然后将我的代码更改为:

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

周五晚些时候和.net在一起并不好玩。我没有生命-P

我尝试了下面的代码,它对我有效:

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

听起来问题不在于方法,而在于将自动完成连接到方法的方式。。。您的扩展器与以下类似吗:

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

我看到的问题是AJAX库将数字视为整数。它需要将它们视为字符串。

我已经把它转换成字符串,但仍然一无所获。我必须在数字中添加某种字符,使它们的值现在被视为字符串。这是一件可怕的事情。但是在AJAX库中的某个地方,对于autocomplete extender.js文件,他们不寻找整数。他们只寻找需要关注的字符串,因为他们的构建方式有缺陷。。。

斯科特。

我遇到了同样的问题。我同意这个问题似乎源于我们在这里使用的数字。只要我在数组项的末尾附加一个alpha,它就可以工作了。我相信我们发现了一个错误。

这就把不败者踢出局了。。。。

...
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++;
        }
...

对我来说似乎是个bug。

工具箱dll版本之间存在差异。

在更新的版本中,不需要插入"'"++"'",而且效果很好。在1.0.10920版本中,它是必需的。

http://www.asp.net/ajax在上面的链接中,你会发现AjaxControllerToolkit,只需下载它并在你的应用程序中添加引用,我相信它会很好地工作。问题是你使用非常旧的AjaxControllerToolkit,所以它不起作用,使用AjaxControllToolkit 3.5或4.0。