2009-08-31 5 views
0

J'ai des problèmes avec la pagination. Cela ne fonctionne pas, c'est-à-dire que le nombre d'états de liste est toujours égal à zéro pour le code ci-dessous.La pagination ne fonctionne pas Subsonic

Si je supprime la méthode paginée, les résultats corrects s'affichent. Comment puis-je résoudre cela? J'utilise Subsonic 2.2. Pls aide - grâce


SubSonic.SqlQuery query = DB.Select().Paged(startIndex, pageSize) 
      .From<Staff>() 
      .InnerJoin(StaffLocation.Schema.TableName, StaffLocation.Columns.StaffId, Staff.Schema.TableName, Staff.Columns.StaffId) 
      .InnerJoin(StaffClientGroup.Schema.TableName, StaffClientGroup.Columns.StaffId, Staff.Schema.TableName, Staff.Columns.StaffId) 
      .InnerJoin(StaffOutcome.Schema.TableName, StaffOutcome.Columns.StaffId, Staff.Schema.TableName, Staff.Columns.StaffId); 
      query.Where("1").IsEqualTo("1"); 
      if (regionId > 0) query.And(StaffLocation.Columns.RegionId).IsEqualTo(regionId); 
      if (clientGroup > 0) query.And(StaffClientGroup.Columns.ClientGroupId).IsEqualTo(clientGroup); 
      if (outcome > 0) query.And(StaffOutcome.Columns.OutcomeId).IsEqualTo(outcome); 
      query.Distinct(); 
      query.OrderBys.Add(Staff.Columns.FirstName); 
      List<Staff> staffs = query.ExecuteTypedList<Staff>(); 
      return staffs; 

Répondre

1

Eh bien, je peux vous dire que ce fait travail :) et j'ai le sentiment que ...

  1. Votre startIndex est faux - essayez d'utiliser 1 ou 2
  2. Votre pageSize est pas défini
  3. Qu'est-ce que "Où (" 1 "). IsEqualTo (" 1")?

Vous pouvez essayer de saisir le SQL pour voir ce qui se produit ...

+2

Je pense que le "Où (" 1 "). IsEqualTo (" 1 ") est là parce que .Where() doit être appelé avant .And(), sauf les .And() sont conditionnels. –

2

Mettez un point d'arrêt sur la deuxième à la dernière ligne et quand il est frappé execute query.BuildSqlStatement() dans la fenêtre immédiate Visual Studio et inspectez le SQL généré. Cela pourrait aider à le réduire.