Vous êtes ici Forums
  |  Connexion
 Forums
HomeHomeForums DNNForums DNNDéveloppementDéveloppementPagination sur DNNPagination sur DNN
Précédente
 
Suivante
Nouveau message
17/09/2008 11:37
 

Bonjour,

Je suis à la recherche d'un composant ou module qui me permet d'integrer la pagination.

Merci d'avance pour votre.

 
Nouveau message
17/09/2008 12:55
 

Bonjour,

pas sûr de comprendre ce que tu cherches: il y a plein de choses que tu peux vouloir paginer. De quelle pagination s'agit-il?


Jesse
Société de conseil et de service en 
informatique et systèmes d'information
 
Nouveau message
18/09/2008 13:04
 

bonjour,

en faite je veux paginer du texte dans un module html/txt. mon but est d'eviter le deffilement de la page.

 
Nouveau message
18/09/2008 16:49
 

Il existe un certain nombre de module permettant de publier des pages de text/html (la plupart de modules d'articles et d'autre module plus simple qui se contentent de rajouter cette fonctionnalité au text/html).

Alternativement, d'autres modules permettent d'encapsuler plusieurs modules sous forme de pages.

Une recherche sur Google/Snowcovered/Marketplace devrait donner un éventail de possibilités.


Jesse
Société de conseil et de service en 
informatique et systèmes d'information
 
Nouveau message
19/09/2008 13:15
 

Bonjour,

Je veux rajouter cette fonctionnalité au text/html mais je ne sais pas comment faire. Vous pouvez me donner une piste.

Merci :)

Jessynoo a dit :

Il existe un certain nombre de module permettant de publier des pages de text/html (la plupart de modules d'articles et d'autre module plus simple qui se contentent de rajouter cette fonctionnalité au text/html).

Alternativement, d'autres modules permettent d'encapsuler plusieurs modules sous forme de pages.

Une recherche sur Google/Snowcovered/Marketplace devrait donner un éventail de possibilités.

 
Nouveau message
19/09/2008 14:49
 

Encore une fois, le plus simple est d'abandonner l'utilisation stricte du text/html et d'intégrer un module de remplacemente/complément qui fournira la fonctionnalité -> rechercher des modules d'articles ou des modules d'encapsulation de module (Css tabs etc..). Une autre possibilité: intégrer la logique Html/Css/Javascript directement dans le corps du contenu inséré dans le text/html.

Sinon, il ne devrait pas être très difficile de modifier le text/html pour qu'il le fasse de lui même, d'autant plus que le module est livré "non-compilé", mais naturellement il faut savoir coder un module DNN.

Une démarche possible, au plus vite:

  • Recopier le Répertoire Html dans DesktopModule histoire de créer et déclarer un nouveau module (Paged Html?)
  • Dans l'ascx de visualisation, remplacer le Litéral d'affichage par une GridView/ListView paginée en automatique, dont l'unique TemplateField est composé du litéral en question, et dont la taille d'une page est 1.
  • Dans le code behind, intercepter l'appel au controller métier chargeant le contenu html et effectuer à cet endroit la tache de division de la chaine de caractère de contenu en chaines de tailles maximale définie (String --> List(Of String))
  • Remplacer l'alimentation du litéral par un DataBind sur un DataSource correspondant à la liste des chaines de caractères.
  • Déclarer le nouveau module, déclarer le contrôle de visualisation en "Enable Partial Rendering" histoire de bénificier d'un rafraichissement Ajax du contrôle de pagination.

Option: Au moment de la division en pages, utiliser un composant de type SharpNLP pour diviser le texte en phrases et éviter de couper une phrase en plein milieu.


Jesse
Société de conseil et de service en 
informatique et systèmes d'information
 
Nouveau message
19/09/2008 16:49
 

j'ai essayé d'appliquer les modfications, je me retrouve bloquer sur la 3ème etape : modification au niveau du code. Je ne sais ou je dois modifier.

voila le code sur page load :

Try

 

' edit in place

lblContent.EditEnabled =

 

Me.IsEditable' get HtmlText object

 

 

 

Dim objHTML As New HtmlTextControllerDim objText As HtmlTextInfo = objHTML.GetHtmlText(ModuleId)' get default content from resource file

 

 

Dim strContent As String = Localization.GetString("AddContentFromToolBar.Text", LocalResourceFile)If Entities.Portals.PortalSettings.GetSiteSetting(PortalId, "InlineEditorEnabled") = "False" Then

lblContent.EditEnabled =

False

strContent = Localization.GetString(

 

"AddContentFromActionMenu.Text", LocalResourceFile)End If

 

' get html

 

If Not objText Is Nothing Then

strContent = Server.HtmlDecode(

 

CType(objText.DeskTopHTML, String))End If

 

' token replace

 

If CType(Settings("TEXTHTML_ReplaceTokens"), String) <> "" Then

 

If CType(Settings("TEXTHTML_ReplaceTokens"), Boolean) = True Then

 

tr.AccessingUser = UserInfo

tr.DebugMessages =

strContent = tr.ReplaceEnvironmentTokens(strContent)

lblContent.EditEnabled =

Dim tr As New DotNetNuke.Services.Tokens.TokenReplace()Not IsTabPreview()False

 

End If

 

End If

 

' localize toolbar

 

If lblContent.EditEnabled Then

 

objButton.ToolTip = Services.Localization.Localization.GetString(

 

For Each objButton As DotNetNuke.UI.WebControls.DNNToolBarButton In Me.tbEIPHTML.Buttons"cmd" & objButton.ToolTip, LocalResourceFile)Next

 

Else

 

Me.tbEIPHTML.Visible = False

 

End If

 

' add content to module

lblContent.Controls.Add(

 

ProcessModuleLoadException(

 

New LiteralControl(DotNetNuke.Common.Globals.ManageUploadDirectory(strContent, PortalSettings.HomeDirectory)))Catch exc As ExceptionMe, exc)End Try

 

Jessynoo a dit :

Encore une fois, le plus simple est d'abandonner l'utilisation stricte du text/html et d'intégrer un module de remplacemente/complément qui fournira la fonctionnalité -> rechercher des modules d'articles ou des modules d'encapsulation de module (Css tabs etc..). Une autre possibilité: intégrer la logique Html/Css/Javascript directement dans le corps du contenu inséré dans le text/html.

Sinon, il ne devrait pas être très difficile de modifier le text/html pour qu'il le fasse de lui même, d'autant plus que le module est livré "non-compilé", mais naturellement il faut savoir coder un module DNN.

Une démarche possible, au plus vite:

  • Recopier le Répertoire Html dans DesktopModule histoire de créer et déclarer un nouveau module (Paged Html?)
  • Dans l'ascx de visualisation, remplacer le Litéral d'affichage par une GridView/ListView paginée en automatique, dont l'unique TemplateField est composé du litéral en question, et dont la taille d'une page est 1.
  • Dans le code behind, intercepter l'appel au controller métier chargeant le contenu html et effectuer à cet endroit la tache de division de la chaine de caractère de contenu en chaines de tailles maximale définie (String --> List(Of String))
  • Remplacer l'alimentation du litéral par un DataBind sur un DataSource correspondant à la liste des chaines de caractères.
  • Déclarer le nouveau module, déclarer le contrôle de visualisation en "Enable Partial Rendering" histoire de bénificier d'un rafraichissement Ajax du contrôle de pagination.

Option: Au moment de la division en pages, utiliser un composant de type SharpNLP pour diviser le texte en phrases et éviter de couper une phrase en plein milieu.

 
Nouveau message
19/09/2008 17:57
 

mhilout a dit :

lblContent.EditEnabled =Me.IsEditable

Virer du page_load tout ce qui concerne l'EditLabel DNN lblContent, qui doit faire parti du template maintenant, donc de toute façon VS.Net ne doit plus en vouloir faute de déclaration dans l'ascx.

D'autre part, je pense qu'il est oportun de ne pas s'encombrer avec l'édition en ligne -> EditEnable = false directement dans l'ascx.

mhilout a dit :

lblContent.Controls.Add(

New LiteralControl(DotNetNuke.Common.Globals.ManageUploadDirectory(strContent, PortalSettings.HomeDirectory))

La, au lieu de créer le literal, récupérer le résultat de la fonction ManageUploadDirectory... dans une variable de type String.

Il s'agit du contenu à diviser en pages. Faire donc cette division.

Une fois muni d'un enumerable de String (List(Of String) pour faire simple) correspondant aux pages, le définir comme datasource du contrôle composite (GridView/ListView), et appeler DataBind sur ce même contrôle.

Ensuite, déclarer l'évenement OnItemDatabound toujours sur ce contrôle (listes déroulantes évenementielles dans VS.Net pour le trouver et rajouter la méthode dans le codebehind)

Dans le Sub correspondant, récupérer un DirectCast(e.Item.FindControl("IdDuContainerDansLeTemplate"), TypeDuContainer) dans une variable contentHolder.

Récupérer un DirectCast(e.Item.DataItem, String) dans une variable pageContent

Puis faire contentHolder.Controls.Add( New LiteralControl(pageContent))

Il faut également activer la pagination dans le contrôle composite et donc récupérer l'évenement OnPagedChanging, ce qui est obligatoire, mais pas grand chose à mettre dans la méthode, puisque le page_load se charge du boulot, uniquement tenir compte de la nouvelle page. Enfin il me semble que ca peut marcher comme ca, sinon extraire le code de chargement et databinding du html dans une méthode appelée depuis la page_load dans un if Not Me.IsPostBack (premier chargement de la page uniquement) et rappelée a nouveau dans la procédure traitant chaque changement de page.

Le tour est joué.

Bon forcément, le forum dnn.fr n'est pas le meilleur IDE qu'on connaisse donc c'est un peu brouillon comme ça, mais bon l'idée y est.


Jesse
Société de conseil et de service en 
informatique et systèmes d'information
 
Précédente
 
Suivante
HomeHomeForums DNNForums DNNDéveloppementDéveloppementPagination sur DNNPagination sur DNN