【问题标题】:Why is my ASP.NET AutoCompleteExtender returning undefined?为什么我的 ASP.NET AutoCompleteExtender 返回未定义?
【发布时间】:2010-09-16 08:57:36
【问题描述】:

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

当我运行这段代码时:

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....的列表

请帮忙?

【问题讨论】:

    标签: c# linq web-services autocomplete


    【解决方案1】:

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

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

    .net 的周五深夜并不好玩。我没有生命。 :-P

    【讨论】:

    • 我遇到了同样的问题。似乎在 ServiceMethod 返回的项目周围添加引号就可以了。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      听起来问题不在于方法,而在于您将自动完成连接到方法的方式...您的扩展器是否类似于以下内容:

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

      【讨论】:

        【解决方案4】:

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

        我已将其转换为字符串,但仍然一无所获。我必须在数字中添加某种字符,以使它们的值现在被视为字符串。这是一件可怕的事情。但是在自动完成扩展器 .js 文件的 AJAX 库中的某处,它们不查找整数。他们只寻找需要查看的字符串,因为他们的构建方式存在缺陷......

        斯科特。

        【讨论】:

        • 如果直接调用服务会得到什么?
        【解决方案5】:

        我遇到了同样的问题。我同意这个问题似乎肯定是围绕我们在这里使用数字而产生的。只要我将一个 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++;
                }
        ...
        

        对我来说似乎是一个错误。

        【讨论】:

          【解决方案6】:

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

          在更新版本中,不需要插入“'”++“'”,就可以正常使用了。在 1.0.10920 版本中是需要的。

          【讨论】:

            【解决方案7】:

            http://www.asp.net/ajax 在上面的链接中,您会发现 AjaxControllToolkit 只需下载它并在您的应用程序中添加参考,我相信它会正常工作。问题是您正在使用非常旧的 AjaxControllToolkit,因此它无法正常工作,请使用 AjaxControllToolkit 3.5 或 4.0。

            【讨论】:

              猜你喜欢
              • 2021-04-25
              • 2014-06-04
              • 2017-07-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-11-15
              • 2021-10-19
              • 2015-12-16
              相关资源
              最近更新 更多