Я пытаюсь привязать список к моему кендо со списком, список содержит более 30000 записей, поэтому мне нужна функция виртуализации. Я проверил эту документацию:
http://docs.telerik.com/kendo-ui/controls/editors/combobox/virtualization#valuemapper
и пытался реализовать, но не повезло.
Мой веб-API
[Authorize]
[HttpGet]
[Route("app/clients")]
[GzipCompressed]
public IEnumerable<string> GetClients()
{
return businessLayer.GetClients();
}
[Authorize]
[HttpGet]
[Route("app/valuemapper")]
[GzipCompressed]
public int ValueMapper(string value)
{
if (string.IsNullOrWhiteSpace(value))
{
return -1;
}
var clients = businessLayer.GetClients(null);
return clients.ToList().IndexOf(value);
}
businessLayer.GetClients() вернет все 30000+ записей.
это мой джс
$scope.clientsOptions = {
virtual: {
itemHeight: 26,
valueMapper: function(options) {
$http({
url: config.endpoint + '/app' + '/valuemapper',
method: "GET",
params: {"value": options.value}
}).then(function successResponse(response){
options.success(response.data);
})
}
},
height: 520,
dataSource: getClientDataSource()
}
function getClientDataSource() {
var dataSource = new kendo.data.DataSource({
transport: {
read: function(options) {
$http({
method: 'GET',
url: config.endpoint + '/app' + '/clients',
headers: {
'Content-Type': "application/json",
}
}).then(function successResponse(response) {
options.success(response.data);
});
}
},
pageSize: 80,
serverPaging: true,
serverFiltering: true
});
return dataSource;
}
Проблема с этим кодом выше: 1. Кажется, что подкачка не работает, когда я ищу строку в ComboBox и выбираю ее, в следующий раз, когда я щелкаю массив, чтобы открыть поле со списком, он снова вызовет службу, чтобы получить все данные; 2. Щелчок мышью не может выбрать выделение, работает только клавиатура;
Кто-нибудь может помочь?