C# 自动完成框未调用Webmethod和pop,因为未正确显示
我正在尝试使用ajaxToolkit autpcompleteExtender使用autocompletebox。我指的是这个链接。但现在我面临两个问题C# 自动完成框未调用Webmethod和pop,因为未正确显示,c#,asp.net,web-services,ajaxcontroltoolkit,C#,Asp.net,Web Services,Ajaxcontroltoolkit,我正在尝试使用ajaxToolkit autpcompleteExtender使用autocompletebox。我指的是这个链接。但现在我面临两个问题 当我在代码隐藏中使用webmethod时,它可以正常工作,但当我尝试从单独的webservice文件中使用它时,它不会调用它们的webmethod。为此,我还设置了服务路径,但它不起作用。请检查代码 .aspx .asmx 使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用System
.asmx
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.Services;
使用System.Data.SqlClient;
使用系统数据;
使用系统配置;
使用System.Collections.Specialized;
名称空间映射
{
///
///WebService 1的摘要说明
///
[WebService(命名空间=”http://tempuri.org/")]
[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
//要允许使用ASP.NET AJAX从脚本调用此Web服务,请取消注释以下行。
//[System.Web.Script.Services.ScriptService]
公共类WebService 1:System.Web.Services.WebService
{
[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
公共静态列表GetClass(字符串前缀)
{
SqlConnection con=新的SqlConnection(ConfigurationManager.ConnectionString[“dbconnection”].ToString());
con.Open();
SqlCommand cmd=newsqlcommand(“从Mst_类中选择类_Id、标题,其中标题类似于@Name+'%',con”);
cmd.Parameters.AddWithValue(“@Name”,prefixText);
SqlDataAdapter da=新的SqlDataAdapter(cmd);
DataTable dt=新的DataTable();
da.填充(dt);
List ClassNames=新列表();
对于(int i=0;i
谢谢。
但弹出窗口显示不正确
这可能是因为没有为弹出窗口获取正确的
css
。
这里有一个链接,有更多关于这方面的信息类似的问题 编辑1 尝试取消对此行的注释
// [System.Web.Script.Services.ScriptService]
基本上,这个方法将通过脚本调用,您不允许java脚本或jQuery调用它
所以你的代码应该是
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
using System.Collections.Specialized;
namespace Curriculam_Mapping
{
/// <summary>
/// Summary description for WebService1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{
[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
public static List<string> GetClass(string prefixText)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnection"].ToString());
con.Open();
SqlCommand cmd = new SqlCommand("Select Class_Id,Title from Mst_Class where Title like @Name+'%'", con);
cmd.Parameters.AddWithValue("@Name", prefixText);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
List<string> ClassNames = new List<string>();
for (int i = 0; i < dt.Rows.Count; i++)
{
ClassNames.Add(dt.Rows[i][1].ToString());
}
return ClassNames;
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.Services;
使用System.Data.SqlClient;
使用系统数据;
使用系统配置;
使用System.Collections.Specialized;
名称空间映射
{
///
///WebService 1的摘要说明
///
[WebService(命名空间=”http://tempuri.org/")]
[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
//要允许使用ASP.NET AJAX从脚本调用此Web服务,请取消注释以下行。
[System.Web.Script.Services.ScriptService]
公共类WebService 1:System.Web.Services.WebService
{
[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
公共静态列表GetClass(字符串前缀)
{
SqlConnection con=新的SqlConnection(ConfigurationManager.ConnectionString[“dbconnection”].ToString());
con.Open();
SqlCommand cmd=newsqlcommand(“从Mst_类中选择类_Id、标题,其中标题类似于@Name+'%',con”);
cmd.Parameters.AddWithValue(“@Name”,prefixText);
SqlDataAdapter da=新的SqlDataAdapter(cmd);
DataTable dt=新的DataTable();
da.填充(dt);
List ClassNames=新列表();
对于(int i=0;i
我得到了解决方案,只需从web方法及其工作方式中删除静态关键字,我不知道这是否是一种正确的方法,但它对我来说是有效的。
谢谢您的帮助。嘿,谢谢您的完美解决方案,但第一个问题仍然悬而未决。@Ganesh您应该在问题中加入服务和相关html。@Shekhar请检查修改后的问题。@Shekhar通过一个错误“复制”System.Web.Script.Services.ScriptService“属性”。我想它已经在上面一行声明了。@Ganesh它是wcf服务吗?如果是,那么您使用的是什么绑定?
// [System.Web.Script.Services.ScriptService]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
using System.Collections.Specialized;
namespace Curriculam_Mapping
{
/// <summary>
/// Summary description for WebService1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{
[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
public static List<string> GetClass(string prefixText)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnection"].ToString());
con.Open();
SqlCommand cmd = new SqlCommand("Select Class_Id,Title from Mst_Class where Title like @Name+'%'", con);
cmd.Parameters.AddWithValue("@Name", prefixText);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
List<string> ClassNames = new List<string>();
for (int i = 0; i < dt.Rows.Count; i++)
{
ClassNames.Add(dt.Rows[i][1].ToString());
}
return ClassNames;
}
}
}