これはc#.net 2.0です。私はマスターページを使用しています。AJAX AutocompleteExtenderが機能していません。 Webサービスは動作します
- WebServiceは単独で問題なく動作します。
- 私は完全に困惑しています。 TextBoxに入力すると、何も起こりません。
ファイル:
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" %>
オートコンプリート.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;
}
}
私はwebserviceを単独で実行して、私の期待どおりの配列で私のオートコンプリートの結果を得ることができました。その部分は正常に動作しました。最終的に私のウェブサイトはAJAXのウェブサイトではなかったので、AJAXサイトのweb.configをコピーしてweb.configとマージする必要がありました。 – somacore
私は同じ種類の問題を抱えているため、web.configで変更した内容を明示的に投稿できますか? – Blerta
これは私のために今働きます。私の解決策は、Webサービスでこのフレーズを無視していないだけでした。 //このWebサービスを//ASP.NET AJAXを使用してスクリプトから呼び出すには、次の行のコメントを外します。 [System.Web.Script.Services.ScriptService()] – Blerta