2014-11-25 2 views
0

Мой AJAX автозаполнения функция не работает с контролем пользователя, но когда я использую его с нормальной страницы ASP.NET работает отлично:AJAX автозаполнение не работает внутри пользователь управление почему?

[System.Web.Script.Services.ScriptMethod()] 
[System.Web.Services.WebMethod] 
public static List<string> GetCity(string prefixText, string contextKey) 
{ 

    DataTable dt = new DataTable(); 
    string constr = ConfigurationManager.ConnectionStrings["ERPConnection"].ToString(); 
    SqlConnection con = new SqlConnection(constr); 
    con.Open(); 
    string CmdText = "select name+ '-' + ' ['+CONVERT(VARCHAR, custid) +']'as name from ht_cust where name like @City+'%' and EmpID [email protected]"; 
    SqlCommand cmd = new SqlCommand(CmdText, con); 
    cmd.Parameters.AddWithValue("@City", prefixText); 
    cmd.Parameters.AddWithValue("@EmpId", contextKey); 
    SqlDataAdapter adp = new SqlDataAdapter(cmd); 
    adp.Fill(dt); 
    List<string> CityNames = new List<string>(); 
    for (int i = 0; i < dt.Rows.Count; i++) 
    { 
     CityNames.Add(dt.Rows[i][0].ToString()); 
    } 

    return CityNames; 
} 

aspx code 
<asp:UpdatePanel ID="UpdatePanel7" runat="server"> 
    <ContentTemplate> 
     <asp:TextBox ID="txtCity" runat="server" UseContextKey="true" onkeyup="SetContextKey()" CssClass="input-1" Width="200px"></asp:TextBox> 
     <ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" TargetControlID="txtCity" MinimumPrefixLength="1" EnableCaching="true" CompletionSetCount="1" CompletionInterval="1000" ServiceMethod="GetCity" UseContextKey="true" CompletionListCssClass="autocomplete_completionListElement"> 
     </ajaxToolkit:AutoCompleteExtender> 
    </ContentTemplate> 
</asp:UpdatePanel> 
+0

Пожалуйста, помогите мне. –

+0

где код? – xxxx

+0

Поделитесь своим кодом сперва –

ответ

1

Вы не можете вызвать webmethod через пользовательский элемент управления, так как это будет автоматически отображаться внутри страницы. Переместите webmethod на страницу aspx.

Если вы хотите логику внутри контроллера, вы можете позвонить ей с страницы aspx, но ваш webmethod должен быть на странице aspx.

Пример:

В ASPX странице:

[System.Web.Script.Services.ScriptMethod()] 
[System.Web.Services.WebMethod] 
public static List<string> GetCity(string prefixText, string contextKey) 
{ 
    return mycontrol.GetCity(prefixText, contextKey); 
} 

В вашем пользовательском элементе управления:

public static List<string> GetCity(string prefixText, string contextKey) 
{ 

    DataTable dt = new DataTable(); 
    string constr = ConfigurationManager.ConnectionStrings["ERPConnection"].ToString(); 
    SqlConnection con = new SqlConnection(constr); 
    con.Open(); 
    string CmdText = "select name+ '-' + ' ['+CONVERT(VARCHAR, custid) +']'as name from ht_cust where name like @City+'%' and EmpID [email protected]"; 
    SqlCommand cmd = new SqlCommand(CmdText, con); 
    cmd.Parameters.AddWithValue("@City", prefixText); 
    cmd.Parameters.AddWithValue("@EmpId", contextKey); 
    SqlDataAdapter adp = new SqlDataAdapter(cmd); 
    adp.Fill(dt); 
    List<string> CityNames = new List<string>(); 
    for (int i = 0; i < dt.Rows.Count; i++) 
    { 
     CityNames.Add(dt.Rows[i][0].ToString()); 
    } 

    return CityNames; 
} 
+0

sir как создать объект mycontrol в aspx.cs странице –

+0

пожалуйста Смогите любое ответить на этот вопрос? –

+0

zaki sir вы можете объяснить, как вы создали пользовательский элемент управления внутри веб-метода –

Смежные вопросы