2015-05-15 5 views
0

У меня есть проект, который использует ASP.NET 4.5 и C#. У меня есть сервер управления текстовыми полями, привязанный к asp AutoCompleteExtender. Проблема заключается в том, что, похоже, это не соединение с базой данных, так как в моем коде есть ошибка. Для этого я не пользуюсь веб-сервисом просто простым кодом aspx и aspx.cs. Я не был в состоянии отладки, чтобы определить реальную проблему, потому что пока я получаюФункция автозаполнения не работает

неперехваченное исключение брошено методом вызывается через отражение

и нахожусь в процессе выяснения, что вызывает эта проблема.

Вот мои управления TextBox:

<div class="col-md-10">    
      <asp:TextBox ID="txtContactsSearch" runat="server"></asp:TextBox> 
      <cc1:AutoCompleteExtender ServiceMethod="SearchCustomers" 
       MinimumPrefixLength="2" 
       CompletionInterval="100" EnableCaching="false" CompletionSetCount="10" 
       TargetControlID="txtContactsSearch" 
       ID="AutoCompleteExtender1" runat="server" FirstRowSelected="false"> 
      </cc1:AutoCompleteExtender> 
      <asp:RequiredFieldValidator runat="server" ControlToValidate="StudentID" CssClass="text-danger" Display="Dynamic" ErrorMessage="The student ID field is required." /> 
     </div>   

И у меня есть директива AJAX на заявленных на ASPX странице Aswell:

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %> 

И это код, за который реализует функциональные возможности для Автозаполнение:

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

public partial class SearchStudent : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 


    [System.Web.Script.Services.ScriptMethod()] 
    [System.Web.Services.WebMethod] 
    public static List<string> SearchStudents(string prefixText, int count) 
    { 
     using (SqlConnection conn = new SqlConnection()) 
     { 
      conn.ConnectionString = ConfigurationManager 
        .ConnectionStrings["DefaultConnection"].ConnectionString; 
      using (SqlCommand cmd = new SqlCommand()) 
      { 
       cmd.CommandText = "select Fname from Student_Registration_Form where " + 
       "Fname like @SearchText + '%'"; 
       cmd.Parameters.AddWithValue("@SearchText", prefixText); 
       cmd.Connection = conn; 
       conn.Open(); 
       List<string> students = new List<string>(); 
       using (SqlDataReader sdr = cmd.ExecuteReader()) 
       { 
        while (sdr.Read()) 
        { 
         students.Add(sdr["Fname"].ToString()); 
        } 
       } 
       conn.Close(); 
       return students; 
      } 
     } 
    } 
} 
+0

Я отредактировал ваше название. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

ответ

0

[Я думаю, вы использовали эту ссылку для своего обращения ENCE .Но он работал для меня] [1]

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

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

    } 

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

     using (SqlConnection conn = new SqlConnection()) 
     { 
      try 
      { 
       conn.ConnectionString = ConfigurationManager 
         .ConnectionStrings["Default"].ConnectionString; 

       using (SqlCommand cmd = new SqlCommand()) 
       { 
        cmd.CommandText = "select LoginName from Users where " + 
        "LoginName like @SearchText + '%'"; 
        cmd.Parameters.AddWithValue("@SearchText", prefixText); 
        cmd.Connection = conn; 
        conn.Open(); 
        List<string> students = new List<string>(); 
        using (SqlDataReader sdr = cmd.ExecuteReader()) 
        { 
         while (sdr.Read()) 
         { 
          students.Add(sdr["LoginName"].ToString()); 
         } 
        } 
        conn.Close(); 
        return students; 
       } 
      } 
      catch (Exception ex) 
      { 
       return null; 
      } 

     } 

    } 
} 

}

ASPX Код:.

<table style="margin-top: 40px; color: White"> 
    <tr> 
     <td> 
      Search County 
     </td> 
     <td> 
      <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
      <asp:AutoCompleteExtender ServiceMethod="GetCompletionList" MinimumPrefixLength="1" 
       CompletionInterval="10" EnableCaching="false" CompletionSetCount="1" TargetControlID="TextBox1" 
       ID="AutoCompleteExtender1" runat="server" FirstRowSelected="false"> 
      </asp:AutoCompleteExtender> 
     </td> 
    </tr> 
</table> 

Web.Config

<connectionStrings> 
<add name="Default" providerName="System.Data.SqlClient" connectionString="Data Source=SERVERNAME;database=DBNAME;uid=sa;pwd=123;connection reset=false;connection lifetime=1000000;enlist=true;min pool size=1;max pool size=1000000"/> 
    </connectionStrings> 

И не забыл создать таблицу и вставить некоторые записи в SQL Server

1

Вопрос, который привлек мое внимание: вы вызываете неправильный метод в автозаполнения удлинителя

<cc1:AutoCompleteExtender ServiceMethod="SearchCustomers" 

public static List<string> SearchStudents(string prefixText, int count) 
    { 

Здесь вы можете увидеть, как вы прошли SearchCustomers в ServiceMehtod, но на странице вы используете SearchStudents.

Недавно я пробовал плагин для автозаполнения TypeAhead Twitter, который прост и быстр по сравнению с Autocomplete Extender. Посмотрите, что вам может понравиться: Textbox autocomplete using twitter typeahead in asp .net

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