Here some code from one of my project,
=====================
CREATE PROCEDURE dbo.[ps_Notes_RechercherParDossierId_Page]
 @dossier_id [int],
 @PageIndex [int],
 @PageSize [int],
 @TotalRecords [int] OUTPUT
AS
SET NOCOUNT ON

/* Variables */
DECLARE @FirstRec int
DECLARE @LastRec int

/* Création de la table temporaire */
CREATE TABLE #TempTable
(
 [Id] [int] IDENTITY (1, 1) NOT NULL,
 [note_Id] [int] NOT NULL,
 [note_DateCreation] [datetime],
 [note_Commentaire] [varchar](255),
 [note_UtilisateurId] [int],
 [note_Type] [int]
)

/* Insertion dans la table temporaire */ INSERT INTO #TempTable (
 note_Id,
 note_DateCreation,
 note_Commentaire,
 note_UtilisateurId,
 note_Type
)
SELECT
 note.Id,
 note.DateCreation,
  note.Commentaire,
 note.Utilisateur_Id,
 note.Type
FROM
 Notes note
WHERE
 note.Dossier_Id = @dossier_id
ORDER BY
 note.DateCreation,
 note.Id

/* Définition des curseurs */
SELECT @FirstRec = (@PageIndex - 1) * @PageSize SELECT @LastRec = (@PageIndex * @PageSize) + 1

/* Sélection dans la table temporaire */
SELECT
 tmp.note_Id AS Id,
 tmp.note_DateCreation AS DateCreation,
 tmp.note_Commentaire AS Commentaire,
 tmp.note_Type AS Type
FROM
 #TempTable tmp
WHERE
 tmp.Id > @FirstRec
AND
 tmp.Id < @LastRec

/* Définition du nombre total d'enregistrement */ SELECT
 @TotalRecords = COUNT(*)
FROM
 #TempTable

/* Suppression de la table temporaire */
DROP TABLE #TempTable
 
GO
==============================
<resultMaps> 
 <resultMap id="Note-result" class="Note">
  <result property="Id" column="Id"/>
  <result property="DateCreation" column="DateCreation"/>
  <result property="Commentaire" column="Commentaire"/>
  <result property="TypeNote" column="Type"/>
 </resultMap>
</resultMaps> 
 
<statements>
 <procedure id="RechercherNoteParDossierId" parameterMap="RechercherPage-params" resultMap="Note-result" listClass="NoteCollection">
  ps_Notes_RechercherParDossierId
 </procedure>
</statements>

<parameterMaps>
 <parameterMap id="RechercherPage-params">
  <parameter property="DossierId" column="Id"/>
  <parameter property="PageIndex" column="PageIndex"/>
  <parameter property="PageSize" column="PageSize"/>
  <parameter property="TotalCounts" column="TotalRecords" direction="output"/>
 </parameterMap>
</parameterMaps>
====================================
/// <summary>
///  Récupère les Notes d'un dossier (Système de pagination)
/// </summary>
/// <param name="pageIndex">Index de la page demandée</param>
/// <param name="pageSize">Taille de la page demandée</param>
/// <param name="dossierId">Id du dossier cotenant la Note.</param>
/// <returns>Un objet PageListe contenant la liste de Notes désirée</returns>
public PageListe RechercherNotesParDossierId(int pageIndex, int pageSize, int dossierId)
{
// Création des objets
PageListe page = new PageListe();
page.PageIndex = pageIndex;
page.PageSize = pageSize;

// Création des paramètres
Hashtable param = new Hashtable();
param.Add("DossierId", dossierId);
param.Add("PageIndex", page.PageIndex);
param.Add("PageSize", page.PageSize);
param.Add("TotalCounts", 0);

// Execution
page.Elements = (NoteCollection) this.QueryForList("NoteRechercherParDossierIdPage", param);
page.TotalCount = (int) param["TotalCounts"];

// Retour
return page;
}
=========
Cheers,
-Gilles

Reply via email to