2012-10-15 77 views
2

我試圖從數據庫創建一個搜索。當用戶開始在文本框中輸入內容時,城鎮列表將顯示在帶有autocompleteextender的文本框下。它在正常的網頁中工作正常,但如果我把代碼放在母版頁中,它就不起作用。 「GetList」不是事件觸發。有什麼建議麼?謝謝。Ajax自動完成擴展器在masterpage中不起作用

母版頁代碼:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Master.master.cs" Inherits="Obelo.MasterPages.Master1" %> 
<%@ Register TagPrefix="asp" Namespace="AjaxControlToolkit" Assembly="AjaxControlToolkit"%> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
    <title></title> 
</head> 
<body bgcolor="#5c5b5b"> 
    <form id="form1" runat="server"> 
     <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="Server" /> 
     <asp:textbox id="tbFindWhat" runat="server" Width="210px" Font-Names="Arial" 
       Font-Size="9pt" ForeColor="#FF6600" BackColor="#1E1E1E" 
       BorderColor="White" BorderStyle="Solid" BorderWidth="1px" 
       Style="padding:0 0 0 10px; margin: -2px"></asp:textbox> 
     <asp:AutoCompleteExtender ID="AutoCompleteExtender1" 
       runat="server" TargetControlID="tbFindWhat" MinimumPrefixLength="1" 
       EnableCaching="true" CompletionSetCount="1" 
       CompletionInterval="1000" ServiceMethod="GetList"> 
     </asp:AutoCompleteExtender> 
     <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> 
     </asp:ContentPlaceHolder> 
    </form> 
</body> 
</html> 

後面的代碼:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Drawing; 
using System.Data.SqlClient; 
using System.Configuration; 
using System.Data; 

namespace MasterPage 
{ 
    public partial class Master1 : System.Web.UI.MasterPage 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     [System.Web.Script.Services.ScriptMethod()] 
     [System.Web.Services.WebMethod] 
     public static List<string> GetList(string prefixText) 
     { 
      SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["BusinessConnectionString"].ToString()); 
      con.Open(); 
      SqlCommand cmd = new SqlCommand("select * from tblTowns where Name like @Name+'%'", con); 
      cmd.Parameters.AddWithValue("@Name", prefixText); 
      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      DataTable dt = new DataTable(); 
      da.Fill(dt); 
      List<string> CountyNames = new List<string>(); 
      for (int i = 0; i < dt.Rows.Count; i++) 
      { 
       CountyNames.Add(dt.Rows[i][1].ToString()); 
      } 
      con.Close(); 
      return CountyNames; 
     } 
    } 
} 
+0

都是由包括在用戶控制的擴展所需的腳本?瀏覽器是否有JS錯誤? – rikitikitik

+0

嗨,一切都是一樣的,在正常的asp.net頁面,它工作正常,沒有使用JavaScript。 – user1726528

回答

1

按文檔,服務方法的簽名必須是:

public string[] GetCompletionList(string prefixText, int count, string contextKey) 
{ 
    ... 
} 

結帳自動完成擴展性能here

+0

計數和上下文鍵改變了什麼?因爲在我將它放入masterpage之前是可以的。 – user1726528

+0

@ user1726528不,我的意思是返回類型! – Agent007

0

我搜索了很多,但如果你放在everypage的WebMethod,其不良修復,但它將使工作,它的工作原理