Asp.net 无法为我的AutoCompleteXtender填充数据
我不知道该怎么做。 我已经为它准备了一个AutoCompleteXtender和脚本管理器。我只是无法从数据库表中获取数据来填充自动完成。 我已经看遍了所有的地方,实际上我正在尝试从我的SQL compact表中获取数据,但似乎没有论坛主题专门涉及如何连接到SQL compact服务器。我在Web.config文件中有一个ConnectionString,我想在ConfigurationManager中,在后面的C代码中使用它 无论如何,这是我的ASP:Asp.net 无法为我的AutoCompleteXtender填充数据,asp.net,sql,ajaxcontroltoolkit,Asp.net,Sql,Ajaxcontroltoolkit,我不知道该怎么做。 我已经为它准备了一个AutoCompleteXtender和脚本管理器。我只是无法从数据库表中获取数据来填充自动完成。 我已经看遍了所有的地方,实际上我正在尝试从我的SQL compact表中获取数据,但似乎没有论坛主题专门涉及如何连接到SQL compact服务器。我在Web.config文件中有一个ConnectionString,我想在ConfigurationManager中,在后面的C代码中使用它 无论如何,这是我的ASP: <ajaxToolkit:
<ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" >
</ajaxToolkit:ToolkitScriptManager>
</asp:TextBox><ajaxToolkit:AutoCompleteExtender
ID="AutoCompleteExtender1"
TargetControlID="ClientSearch"
runat="server"
ServiceMethod="GetCompletionList"
MinimumPrefixLength="1"
UseContextKey="True">
</ajaxToolkit:AutoCompleteExtender>
<asp:Button ID="SearchSubmit" runat="Server" Text="Search" />
下面是我的C代码:
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
public static string[] GetCompletionList(string prefixText, int count, string contextKey)
{
string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("SELECT TOP " + count + " Name FROM Current WHERE Name LIKE '" + prefixText + "%'", conn);
SqlDataReader oReader; conn.Open(); List<string> CompletionSet = new List<string>();
oReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); while (oReader.Read()) CompletionSet.Add(oReader["Name"].ToString()); return CompletionSet.ToArray();
}
}
这是我的Web.config连接字符串:
<connectionStrings>
<add name="ConnectionString" connectionString="Data Source=|DataDirectory|\Clients.sdf" providerName="System.Data.SqlServerCe.4.0" />
<add name="ClientsEntities" connectionString="metadata=res://*/App_Code.Model.csdl|res://*/App_Code.Model.ssdl|res://*/App_Code.Model.msl;provider=System.Data.SqlServerCe.4.0;provider connection string="data source=|DataDirectory|\Clients.sdf"" providerName="System.Data.EntityClient" />
</connectionStrings>
我很可能在这里做错了什么。有人能给我指一下正确的方向吗?尤里,
你是对的。我更改了类型和名称间隔以支持SqlCe
驻军,
你可能是对的。如果有更好的方法,我愿意接受建议。我只是尝试使用教程中的代码。
我正在构建的应用程序将位于本地intranet上。不过,我还是不介意使用最佳实践方法
我可以使用静态字符串方法并在字符串中存储数据,但如果我能提供帮助的话,我宁愿对它保持动态 为什么使用System.Data.SqlClient命名空间中的类型而不是System.Data.SqlServerCe,例如SqlConnection而不是SqlCeConnection?如果已经有EF上下文,为什么要使用普通ADO.NET?请不要在SQL查询中使用字符串连接。这就给SQL注入攻击留下了很大的空间。使用SQL参数。