【发布时间】:2020-11-28 11:27:35
【问题描述】:
CSS 用户 select2 版本 Select2-4.0.13 和 bootstrap4
<link href="Styles/Select2-4.0.13/select2.min.css" rel="stylesheet" type="text/css" />
<link href="Styles/Select2-4.0.13/select2-bootstrap4.min.css" rel="stylesheet" type="text/css" />
ASPX 使用类 js-data-example-ajax 创建下拉列表名称
<form id="form1" runat="server">
<asp:DropDownList runat="server" class="js-data-example-ajax" style="width: 300px">
</asp:DropDownList>
</form>
Java 脚本 使用文档就绪方法中的 ajax Web 方法调用将数据加载到 select2 下拉列表 但它会引发错误并且无法正常工作
<script src="Scripts/jquery-3.4.1/jquery-3.4.1.min.css" type="text/javascript"></script>
<script src="Scripts/Select2-4.0.13/select2.full.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$('.js-data-example-ajax').select2({
theme: 'bootstrap4',
minimumInputLength: 1,
containerCssClass: ':all:',
allowClear: true,
ajax: {
url: 'WebForm1.aspx/getsource',
dataType: 'json',
//type: "POST",
params: {
contentType: 'application/json; charset=utf-8'
},
data: function (params) {
var query = {
q: params.term,
page: params.page
}
return query;
},
processResults: function (data, params) {
params.page = params.page || 1;
data = jQuery.map(data.results, function (obj) {
obj.id = obj.id;
obj.text = obj.text;
return obj;
});
return {
results: data,
pagination: {
more: params.page * 30 < 4//total records
}
};
},
success: function (data) {
console.log("SUCCESS: ", data);
},
error: function (data) {
console.log("ERROR: ", data);
},
cache: true
}
});
});
</script>
.CS 文件 创建方法作为 web 方法,使用 select2 将数据加载到下拉列表
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string getsource(string q, int page)
{
Select2ModelMain obj = new Select2ModelMain();
obj.results = new List<SelectResult>();
SelectResult objdata1 = new SelectResult();
objdata1.id = 1;
objdata1.text = "INDIA";
obj.results.Add(objdata1);
objdata1 = new SelectResult();
objdata1.id = 2;
objdata1.text = "AMERICA";
obj.results.Add(objdata1);
objdata1 = new SelectResult();
objdata1.id = 3;
objdata1.text = "CHINA";
obj.results.Add(objdata1);
objdata1 = new SelectResult();
objdata1.id = 4;
objdata1.text = "SRILANKA";
obj.results.Add(objdata1);
obj.pagination = new SelectPage();
obj.pagination.more = "true";
if (!(string.IsNullOrEmpty(q) || string.IsNullOrWhiteSpace(q)))
{
obj.results = obj.results.Where(x => x.text.ToLower().StartsWith(q.ToLower())).ToList();
}
JavaScriptSerializer serializer = new JavaScriptSerializer();
string test = serializer.Serialize(obj);
return test;
}
public class Select2ModelMain
{
public List<SelectResult> results { get; set; }
public SelectPage pagination { get; set; }
}
public class SelectResult
{
public int id { get; set; }
public string text { get; set; }
public string disabled { get; set; }
}
public class SelectPage
{
public string more { get; set; }
}
【问题讨论】:
-
你遇到了什么错误?
标签: c# asp.net ajax jquery-select2