当前位置:编程学习 > C#/ASP.NET >>

AutoCompleteExtender 出错

我使用AutoCompleteExtender控件实现自动输入完成。可运行后IE提示JS错误

错误:Sys.ArgumentUndefinedException:Value cannot be undefined
     Parameter name: type
代码:0

default.aspx

<body>
    <form id="form1" runat="server">
        
        <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <asp:TextBox ID="TextBox1" runat="server" AutoComplete="off"></asp:TextBox>
            <ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" 
            TargetControlID="TextBox1" 
            ServiceMethod = "GetCompletionList" 
            ScriptPath="SpSelect.asmx" 
            MinimumPrefixLength="1" 
            CompletionSetCount="15"
             CompletionInterval="1000"
             EnableCaching="true"
             >
            </ajaxToolkit:AutoCompleteExtender>
            </div>
    </form>    
</body>

SpSelect.cs


using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Data.OleDb;
using System.Collections.Generic; //List
using System.Data;
using System.Web.Script.Services;


/// <summary>
/// SpSelect 的摘要说明
/// </summary>
/// 
[ScriptService()]
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class SpSelect : System.Web.Services.WebService {

    public SpSelect () {

        //如果使用设计的组件,请取消注释以下行 
        //InitializeComponent(); 
    }

    //自动输入完成
   
    [WebMethod]
    public string[] GetCompletionList(string prefixText,int count) {
        // 定义一个泛用集合对象 List 来储存建议词。
        List<string> suggestions = new List<string>();
        try
        {
            string sqlstr = "SELECT DISTINCT sp_mc FROM sp_gl WHERE sp_mc LIKE @prefixName ORDER BY 1";
            OleDbParameter[] parm = new OleDbParameter[1];
            parm[0] = new OleDbParameter("@prefixName", prefixText + "%");

            OleDbDataReader dr = DBOperation.ExecuteReader(DBOperation.CONN_STRING_NON_DTC, CommandType.Text, sqlstr, parm);

            while (dr.Read())
            {
                suggestions.Add(dr["sp_mc"].ToString());
            }
            return suggestions.ToArray();
        }
        catch (Exception ex)
        {
            suggestions.Add(ex.Message);
            return suggestions.ToArray();
        }
   

    }
    
}

--------------------编程问答-------------------- 难道没人用吗 --------------------编程问答-------------------- 楼主的AutoCompleteExtender版本是 3.5的还是2.0的 --------------------编程问答-------------------- 2.0 --------------------编程问答-------------------- 我的是3.5刚用了下正常,你设个断点,看看异常是在什么时候抛出的,是你后台代码已经执行返回了值就抛出异常还是,后台代码没有执行之前就抛异常了 --------------------编程问答-------------------- 我在public string[] GetCompletionList(string prefixText,int count) { 
处设的断点。但是没走到这 --------------------编程问答-------------------- 我直接建的CTP项目。应该web.config不会有什么问题 --------------------编程问答-------------------- ?为什么所有的回复全变没了? --------------------编程问答-------------------- 路过来看看 --------------------编程问答-------------------- web.config中加上
<httpHandlers>
        <remove verb="*" path="*.asmx"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>        
      </httpHandlers>
就可以了!
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,