0

我不确定解决这个问题的正确方法。我有一个 AutoCompleteExtender 以及它的脚本管理器。我只是无法从我的数据库表中获取数据来填充我的自动完成功能。我已经查看了所有内容,实际上我正在尝试从我的 SQL 紧凑表中获取数据,但似乎没有论坛主题与如何连接到 SQL 紧凑服务器特别相关。我的连接字符串已经到位Web.config 文件,我想在 ConfigurationManager 中使用它,在后面的 C# 代码中。

无论如何,这是我的 ASP:

    <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=&quot;data source=|DataDirectory|\Clients.sdf&quot;" providerName="System.Data.EntityClient" />
    </connectionStrings>

我很可能在这里做错了什么。有人能指出我正确的方向吗?

4

1 回答 1

1

尤里,你是对的。我更改了类型和命名空间以支持 SqlCe。

加里森,你可能是对的。如果有更好的方法,我愿意接受建议。我只是想使用教程中的代码。我正在构建的应用程序将在本地 Intranet 上。不过,我仍然不介意使用最佳实践方法。

我可以使用静态字符串方法并将数据存储在字符串中,但如果我能提供帮助,我宁愿动态处理它。

于 2013-07-03T22:11:25.833 回答