Xai*_*oft 3 javascript c# jquery linq-to-entities jquery-select2
我对javascript不太熟悉,所以我需要帮助.我有这个方法返回客户列表(2000+),因此Select2下拉列表挂起.我想启用分页,但我不确定我需要改变什么.这是我的javascript代码:
var GetCutomerDDL = function(cient) {
var Json = {},
customers = [];
$ddlCustomers.select2('val', '');
Json.client = cient;
$.post(urlContent + 'Cutomer/GetCustomerDDL', Json, function(data) {
}, 'json').done(function(data) {
customers = data;
$ddlCustomers.select2({
placeholder: "Select Customer(s)",
allowClear: true,
multiple: true,
data: customers
});
});
};
Run Code Online (Sandbox Code Playgroud)
GetCustomerDDL
使用LINQ只返回所有客户,但我想启用分页,所以不要一次在下拉列表中加载超过2000条记录.我需要在javascript和服务器端更改什么?
Select2控件包括"无限滚动".这可能就是你要找的东西.
Scroll2的主页位于:http://select2.github.io/
在服务器端,您将希望使用Skip()
和Take()
LINQ运算符在数据中向前跳过并从数据中仅获取一定数量的项.Select2应该传递哪些项目以跳过并带到您的控制器.
编辑:
尝试改变这个:
$.post(urlContent + 'Cutomer/GetCustomerDDL', Json, function(data) {
}, 'json').done(function(data) {
customers = data;
$ddlCustomers.select2({
placeholder: "Select Customer(s)",
allowClear: true,
multiple: true,
data: customers
});
});
Run Code Online (Sandbox Code Playgroud)
对此:
$ddlCustomers.select2({
ajax: {
url: urlContent + 'Cutomer/GetCustomerDDL',
dataType: 'json',
data: function (term, page) {
return {
q: term, // search term
pageLimit: 10,
page: page, // page number
client: client
};
},
results: function (data, page) {
var more = (page * 10) < data.total; // whether or not there are more results available
return { results: data.customers, more: more };
}
},
});
Run Code Online (Sandbox Code Playgroud)
在您的控制器上,您需要在"客户"属性中返回客户的子列表,并在"总"属性中返回总客户.
return Json(new { customers = customers.Skip(...).Take(...),
total = customers.Count() }, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud)
示例json结果:
{ customers: [...], total: 2000 }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7381 次 |
最近记录: |