如何使用c#webmethod动态填充选择
我正在使用https://selectize.github.io/selectize.js/ ,我跟随他们的动态人口示例
在我的aspx页面中
$('#stationid').selectize({ valueField: 'value', labelField: 'text', searchField: ['text'], create: function (input, callback) { $.ajax({ url: 'Search.aspx/GetListboxValues', data: "{'query':'" + input+ "'}", type: 'POST', dataType: 'json', success: function (response) { return callback(response); } }); }, render: { option: function (item, escape) { return '' + escape(item.text) + ''; } }, load: function (query, callback) { if (!query.length) return callback(); $.ajax({ type: "POST", url: "Search.aspx/GetListboxValues", data: "{'query':'" + query + "'}", contentType: "application/json; charset=utf-8", dataType: 'json', error: function () { callback(); }, success: function (res) { callback(res); } }); } });
在我的aspx.cs中我有
[WebMethod] public static string GetListboxValues(string query) { string _conString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; SqlConnection con = new SqlConnection(_conString); SqlCommand cmd = new SqlCommand(); cmd.Connection = con; string sql = "select station_name as [value], station_name as [text] from station where station_name like '%" + query + "%' group by station_name order by station_name asc"; cmd.CommandText = sql; con.Open(); DataTable dt = new DataTable(); using (var da = new SqlDataAdapter(cmd)) { da.Fill(dt); } return JsonConvert.SerializeObject(dt); }
webmethod工作并以下列格式返回json
{ “d”: “[{\” 值\ “:\” IM-987 \ “\ ”文本\“:\ ”IM-987 \“},{\ ”值\“:\” S-2987 \ “\ ”文本\“:\ ”S-2987 \“},{\ ”值\“:\ ”S-987 \“,\ ”文本\“:\ ”S-987 \“}]”}
如果我输入列表框,则选择添加我正在键入的内容并触发webmethod,但列表框不会填充返回的json值。 我怎么解决这个问题? 先感谢您!
如果其他人有这个问题,那个怪异的问题就是json的格式错误了。 我需要使用eval函数来获取json中的文本,因为原始json具有所有这些“
所以就这样做吧
success: function (res) { var rspns = eval(res.d); callback(rspns); }