2015-11-20 66 views
1

我使用JSON.stringify作爲Web表單的文本框自動填充功能。我想要做的是;通過從我的數據庫中獲取適當的城市名稱來自動填充城市名稱的文本框。自動完成後3個字母。JSON在C#web表單中的列表

問題是;建議的城市名稱顯示在一行中。例如,當我輸入到文本框(其被命名爲「MainContent_city」),示出這樣的:「阿雷基帕,阿雷西沃,是厄斯特鬆德,阿雷佐,亞倫達」在一個線,作爲一個字符串對象。我想要的是逐行顯示所有這些城市名稱。如;

阿雷基帕
阿雷西博
是厄斯特鬆德
阿雷佐
亞倫達

下面是我的javascript代碼;

<script type="text/javascript"> 
$(function() { 
    $("#MainContent_city").autocomplete({ 
     source: function (request, response) { 
     var param = { cityname: $('#MainContent_city').val() }; 
     $.ajax({ 
     url: "HotelAdd.aspx/GetCities", 
     data: JSON.stringify(param, null, param.length), 
     dataType: "json", 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     dataFilter: function (data) { return data; }, 
     success: function (data) { 
    response($.map(data, function (item) { 
    return { 
     value: item 
     } 
    })) 
    }, 
error: function (XMLHttpRequest, textStatus, errorThrown) { 
    alert(errorThrown); 
    } 
    }); 
}, 
    minLength: 3 
    }); 
}); 
</script> 

這是 「GetCities」 方法

[WebMethod] 
    public static List<string> GetCities(string cityname) 
    { 
     List<string> City = new List<string>(); 

     string query = "SELECT name FROM City WHERE name LIKE @SearchText + '%'"; 
     //Note: you can configure Connection string in web.config also. 
     SqlCommand cmd = new SqlCommand(query, connection); 
     cmd.Parameters.AddWithValue("@SearchText", cityname); 
     SqlDataAdapter adapter = new SqlDataAdapter(cmd); 
     DataSet ds2 = new DataSet(); 
     adapter.Fill(ds2); 

     for(int i=0; i<ds2.Tables[0].Rows.Count; i++) 
     { 
      City.Add(ds2.Tables[0].Rows[i][0].ToString()); 

     } 

     return City; 
    } 

回答

3

數據包含在data.d我的C#代碼。

更改此response($.map(data, function (item)response($.map(data.d, function (item)

success: function (data) 
{ 
    response($.map(data.d, function (item) { 
    return 
    { 
    value: item 
    } 
})) 
},