2013-05-30 3 views
-1
<script type="text/javascript"> 
    $(function() { 
     $("[id$=txtAuto]").autocomplete({ 
      source: function (request, response) { 
       $.ajax({ 
        url: "NameList.asmx/GetNameList", 
        data: "{ 'Name': '" + request.term + "' }", 
        dataType: "json", 
        type: "POST", 
        contentType: "application/json; charset=utf-8", 
        async: true, 
        success: function (data) { 
         var Details = []; 
         for (i = 0; i < data.d.length; i++) { 
          Details[i] = data.d[i].Name; 
         } response(Details); 
        }, 
        error: function (result) { 
        } 
       }); 
      } 
     }); 
    }); 
</script> 

public class NameList : System.Web.Services.WebService 
{ 
    [WebMethod] 
    public List<UserNameList> GetNameList(string Name) 
    { 
     var emp = new UserNameList(); 
     var fetchName = emp.GetEmpList() 
     .Where(m => m.Name.ToLower().StartsWith(Name.ToLower())); 
     return fetchName.ToList(); 
    } 
} 

public class UserNameList 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 

    public List<UserNameList> GetEmpList() 
    { 
     List<UserNameList> emp = new List<UserNameList>(); 
     string QueryString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ToString(); 

     using (SqlConnection obj_SqlConnection = new SqlConnection(QueryString)) 
     { 
      using (SqlCommand obj_Sqlcommand = new SqlCommand("Select DISTINCT name as txt from lib_memtable where name like @SearchText +'%' ", obj_SqlConnection)) 
      { 
       obj_SqlConnection.Open(); 
       obj_Sqlcommand.Parameters.AddWithValue("@SearchText", Name); 
       SqlDataReader obj_result = obj_Sqlcommand.ExecuteReader(); 
       while (obj_result.Read()) 
       { 
        emp.Add(obj_result["name"].ToString().TrimEnd()); 
       } 
      } 
     } 

     return emp; 
    } 
  1. 이 코드의 문제점은 무엇입니까 도움이 필요하십니까? 나는 지난 두 시간 동안이 일을 해왔다. 데이터베이스에서 이름을 가져 오지 않습니다.
  2. 것 같아요 뭔가 당신이 Select DISTINCT name as txt있어 당신의 SQL이 emp.Add(obj_result["name"].ToString().TrimEnd());

답변

2

에서 잘못된 것입니다. 아래쪽을 읽을 때 name이 아닌 txt으로 참조하십시오.

이에있는 동안 내부의 라인을 변경하는 경우 당신은 그냥 문자열 목록을 반환하는 경우는,

emp.Add(obj_result["txt"].ToString().TrimEnd()); 
0

작동합니다 당신이 List<string>UserNameList.GetEmpList()의 리턴 유형을 변경하고 그에 따라 코드를 수정해야 다음과 같이 표시되어야합니다.

public class UserNameList 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 

    public List<string> GetEmpList() 
    { 
     List<string> emp = new List<string>(); 
     string QueryString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ToString(); 

     using (SqlConnection obj_SqlConnection = new SqlConnection(QueryString)) 
     { 
      using (SqlCommand obj_Sqlcommand = new SqlCommand("Select DISTINCT name as txt from lib_memtable where name like @SearchText +'%' ", obj_SqlConnection)) 
      { 
       obj_SqlConnection.Open(); 
       obj_Sqlcommand.Parameters.AddWithValue("@SearchText", Name); 
       SqlDataReader obj_result = obj_Sqlcommand.ExecuteReader(); 
       while (obj_result.Read()) 
       { 
        emp.Add(obj_result["name"].ToString().TrimEnd()); 
       } 
      } 
     } 

     return emp; 
    } 
} 
관련 문제