-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時間からこれに取り組んできました。データベースから名前を取得していません。
  2. 私はこれで何かが間違っていると思いますemp.Add(obj_result["name"].ToString().TrimEnd());
4

2 に答える 2

2

あなたのSQLでは、Select DISTINCT name as txt. あなたがそれを下に読むとき、あなたはそれをnameではなく として参照しますtxt

while 内の行をこれに変更すると、動作するはずです

emp.Add(obj_result["txt"].ToString().TrimEnd());
于 2013-05-30T11:08:15.430 に答える
0

文字列のリストを返すだけの場合は、戻り値の型をUserNameList.GetEmpList()List<string>変更し、それに応じてコードを変更する必要があります。次のようになります。

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;
    }
}
于 2013-05-30T11:10:37.860 に答える