Dies ist C# .net 2.0. Ich verwende eine Masterpage.AJAX AutocompleteExtender funktioniert nicht. Web Service funktioniert
- Der WebService funktioniert problemlos.
- Ich bin völlig ratlos. Wenn ich die TextBox eintippe, passiert nichts.
Dateien:
EditTicket.aspx AutoComplete.asmx App_Code/AutoComplete.cs
EditTicket.aspx:
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc2" %>
<asp:ScriptManager id="ScriptManager1" runat="server" EnablepageMethods="true">
<Services>
<asp:ServiceReference Path="AutoComplete.asmx" />
</Services>
</asp:ScriptManager>
<cc2:AutoCompleteExtender
runat="server"
ID="AutoCompleteExtender1"
ServicePath="AutoComplete.asmx"
ServiceMethod="AutoComplete2"
MinimumPrefixLength="1"
CompletionSetCount="12"
TargetControlID="TextBox3"
EnableCaching="True" >
</cc2:AutoCompleteExtender>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
AutoComplete.asmx:
<%@ WebService Language="C#" CodeBehind="~/App_Code/AutoComplete.cs" Class="AutoComplete" %>
AutoComplete.cs:
using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Script.Services;
using System.Web.Services.Protocols;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
/// <summary>
/// Summary description for AutoComplete
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class AutoComplete : System.Web.Services.WebService {
public AutoComplete() {
//Uncomment the following line if using designed components
//InitializeComponent();
}
[WebMethod]
[ScriptMethod]
public string[] AutoComplete2(string prefixText,int count)
{
string conString = ConfigurationManager.ConnectionStrings["DB"].ConnectionString;
SqlConnection connection = new SqlConnection(conString);
connection.Open();
SqlParameter prm;
string sql = "Select program_name FROM CM_Programs WHERE program_name LIKE @prefixText";
SqlDataAdapter cmd = new SqlDataAdapter(sql, connection);
prm = new SqlParameter("@prefixText", SqlDbType.VarChar, 50);
prm.Value = prefixText+ "%";
cmd.SelectCommand.Parameters.Add(prm);
DataTable dt = new DataTable();
cmd.Fill(dt);
string[] items = new string[dt.Rows.Count];
int i = 0;
foreach (DataRow dr in dt.Rows)
{
items.SetValue(dr["program_name"].ToString(),i);
i++;
}
connection.Close();
return items;
}
}
Ich konnte den Webservice selbst ausführen und die Ergebnisse meiner Autovervollständigung in einem Array wie ich erwartet bekommen. Dieser Teil hat gut funktioniert. Am Ende war es, dass meine Website keine AJAX-Website war, also musste ich die web.config einer AJAX-Site kopieren und mit meiner web.config zusammenführen. – somacore
Können Sie explizit angeben, was Sie in web.config geändert haben, weil ich die gleiche Art von Problem habe? – Blerta
ok es funktioniert jetzt für mich. Meine Lösung ignorierte diesen Satz einfach nicht im Web-Service // Um diesen Web-Service aus dem Skript mit //ASP.NET AJAX aufzurufen, entfernen Sie die Kommentarzeichen für die folgende Zeile. [System.Web.Script.Services.ScriptService()] – Blerta