Salut,
J'ai créé une Proc qui permet de paginer le jeu d'enregistrement de sortie.
Pour gérer mes boutons de pagination, j'ai besoin du nombre maxi de lignes.
Lorsque j'implémente la proc dans mon objet sqlCommand, je récupère null dans @Rows alors qu'en exécution pas à pas de la proc, j'ai bien une valeur.
Quelqu'un pourrait-il m'aider ?
Voici la proc et le code qui l'exécute
Proc
Code C#
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 ALTER PROCEDURE dbo.SITM_SA_Users_And_Roles_List ( @intPremiereLigne int, @intNbrLignesPage int, @Rows int=0 OUTPUT ) as SELECT @Rows = count(aspnet_Users.UserId) FROM aspnet_Users INNER JOIN aspnet_UsersInRoles ON aspnet_Users.UserId = aspnet_UsersInRoles.UserId INNER JOIN aspnet_Roles ON aspnet_UsersInRoles.RoleId = aspnet_Roles.RoleId; With mCte (RowNumber, idUser, txtNom, idRole,txtRole) As ( SELECT Row_Number() over (order by aspnet_Users.UserName asc) as RowNumber, aspnet_Users.UserId as idUser, aspnet_Users.UserName as txtNom, aspnet_Roles.RoleId as idRole, aspnet_Roles.RoleName as txtRole FROM aspnet_Users INNER JOIN aspnet_UsersInRoles ON aspnet_Users.UserId = aspnet_UsersInRoles.UserId INNER JOIN aspnet_Roles ON aspnet_UsersInRoles.RoleId = aspnet_Roles.RoleId ) Select * From mCte C Where RowNumber Between @intPremiereLigne and (@intPremiereLigne + @intNbrLignesPage -1) RETURN
Notez que j'ai aussi essayé avec la ReturnValue j'ai null aussi. Peut-être faut-il jouer sur le behavior du datareader mais je n'ai pas réussi...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 int intFirstRow; int intRowsPerPage; intFirstRow = Int32.Parse(hidFirstRow.Value); intRowsPerPage = Int32.Parse(hidRowsPerPage.Value); SqlConnection oConn = new SqlConnection(); SqlCommand oCmd = new SqlCommand(); SqlDataReader oDR; string strConnString = ConfigurationManager.ConnectionStrings["SITMConnectionString"].ConnectionString; oConn.ConnectionString = strConnString; oConn.Open(); oCmd.Connection = oConn; oCmd.CommandType = CommandType.StoredProcedure; oCmd.CommandText = "SITM_SA_Users_And_Roles_List"; oCmd.Parameters.Add(new SqlParameter("@intPremiereLigne", intFirstRow)); oCmd.Parameters.Add(new SqlParameter("@intNbrLignesPage", intRowsPerPage)); SqlParameter oRows = new SqlParameter("@Rows", SqlDbType.Int); oRows.Direction = ParameterDirection.Output; oCmd.Parameters.Add(oRows); oDR = oCmd.ExecuteReader(); hidRows.Value = oCmd.Parameters["@Rows"].Value.ToString(); rptList.DataSource = oDR; rptList.DataBind(); oConn.Close();
D'avance merci pour votre aide.
Laurent
Partager