2013-03-18 6 views
0

Я вытаскиваю вычисленный набор данных в приложении ASP.NET MVC3, которое использует JQuery для получения данных для бесконечных прокрутки подкачки через вызов $ ajax. Бэкэнд - это база данных Azure SQL. Вот код:LINQ, пропустить и принять против Azure SQL Databse не работает

[Authorize] 
[OutputCache(Duration=0,NoStore=true)] 
public PartialViewResult Search(int page = 1) 
{ 

     int batch = 10; 
     int fromRecord = 1; 
     int toRecord = batch; 

     if (page != 1) 
     { 
     //note these are correctly passed and set 
     toRecord = (batch * page); 
     fromRecord = (toRecord - (batch - 1)); 

     } 

IQueryable<TheTable> query; 

query = context.TheTable.Where(m => m.Username==HttpContext.User.Identity.Name)   
.OrderByDescending(d => d.CreatedOn) 
.Skip(fromRecord).Take(toRecord); 

//this should always be the batch size (10) 
//but seems to concatenate the previous results ??? 

int count = query.ToList().Count(); 

//results 
//call #1, count = 10 
//call #2, count = 20 
//call #3, count = 30 
//etc... 


PartialViewResult newPartialView = PartialView("Dashboard/_DataList", query.ToList()); 
return newPartialView; 

} 

Данные, возвращаемые из каждого вызова от Jquery $ AJAX продолжает расти на каждом последующем вызове, а затем возвращаются только 10 записей за звонок. Таким образом, результат возвращает все предыдущие данные о вызовах. Кроме того, я добавил 'cache = false' для вызова $ ajax. Любые идеи о том, что здесь происходит не так?

ответ

0

Значения, которые вы передаете Skip и Take, являются неправильными.

  • Аргумент Skip должно быть количество записей, которое вы хотите, чтобы пропустить, которые должны быть 0 на первой странице;

  • Аргументом для Take должно быть количество записей, которое вы хотите вернуть, которое всегда будет равно batch;

Ваш код должен быть:

int batch = 10; 
int fromRecord = 0; 
int toRecord = batch; 

if (page != 1) 
{ 
    fromRecord = batch * (page - 1); 
} 
+0

Спасибо Ричард! Я ценю вашу помощь. –

 Смежные вопросы

  • Нет связанных вопросов^_^