我使用的是Oracle数据库和Select2(jquery selectboxes)。我在数据库中有一个包含约500 000条记录的表。我希望得到此表中的前10-20条记录并将其放入Select2下拉列表中。然后,当用户开始进入SearchBox(Select2)时,查询将更改为仅获得与键入的值匹配的10-20条记录。那可能吗?或者您可能有另一种解决方案如何处理这个问题?我认为下拉列表将是最好的。
感谢您的回复。
到目前为止,我已经尝试过这个:
$('#ddlDost').select2({
url: '<%= ResolveUrl("~/mypage.aspx/getResults") %>',
dataType: 'json',
type: "POST",
params: {
contentType: 'application/json; charset=utf-8'
},
quietMillis: 100,
data: function (term, page) {
return JSON.stringify({ q: term, page_limit: 10 });
},
results: function (data) {
console.log(data);
return { results: data };
}
});
&#13;
和代码背后:
[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json, UseHttpGet = false)]
public static String getResults(String q, String page_limit)
{
DataTable dt = new DataTable();
string connString = "myConnString";
OleDbConnection con = new OleDbConnection(connString);
OleDbCommand cmd = new OleDbCommand();
cmd.CommandText = "SELECT IDENTITY as id ,NAME as text from Supp";
cmd.Connection = con;
con.Open();
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
da.Fill(dt);
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
Dictionary<string, object> row;
foreach (DataRow dr in dt.Rows)
{
row = new Dictionary<string, object>();
foreach (DataColumn dc in dt.Columns)
{
row.Add(dc.ColumnName, dr[dc]);
}
rows.Add(row);
}
return serializer.Serialize(rows);
}
看起来这个WebMethod没有启动。当我设置调试器时,&#39;进入js代码看起来结果也没有开始。我在#34; console.log(data)&#34;的控制台中什么也没有。
有人可以帮我解决这个问题吗?