Vous êtes ici Forums
  |  Connexion
 Forums
HomeHomeForums DNNForums DNNDéveloppementDéveloppementModuleId - accès base de donnéeModuleId - accès base de donnée
Précédente
 
Suivante
Nouveau message
30/12/2008 15:38
 

Bonjour,

je débute et premiere interrogation...

J'ai fais un module qui gere une liste de produits (ajout, modif , supp) liée a une table. et j'aimerais maintenant utilisé cette liste de produit dans une dropdownlist d'un autre module (catalogue) sur une autre page... au sein du module de produit je recupere mes données par

Dim objListProduits As New ListProduitController
            Dim colListProduits As List(Of ListProduitsInfo)
            colListProduits = objListProduits.GetListProduits(ModuleId)

 

mais si je fais ca au sein de mon autre module  "catalogue" le moduleId n'est pas celui des produits et je n'ai donc pas de résultats sur mon getList ( ca me semble logique... ) c'est peut-être que cette approche ne convient pas ?

En faite comment je fais pour acceder aux données d'une autre  table que celle liée à mon module... 

merci a vous....

 

 
Nouveau message
02/01/2009 13:20
 

Bonjour NewTito,

Voici un bout de code qui te permet de récupérer le moduleID d'un autre module en connaissant son FrienddlyName. Je rends généralement cette fonction accessible depuis les ModuleSettings, où je créé une listBox qui va montrer tous les modules cibles utiles à mon module qui cherche du contenu sur lequel baser ses fonctions. Cette listBox permet donc de choisir le module cible. Ensuite, le moduleID choisi est stocké quelque part (dans la base de données ModuleSettings par exemple) pour être facilement accèdée depuis nimporte où au sein du module configuré.

- - - - La listBox - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

<asp:DropDownList ID="drpModuleID" runat="server" Width="325" DataValueField="ModuleID"
                DataTextField="ModuleTitle" CssClass="NormalTextBox" AutoPostBack="True">
            </asp:DropDownList>

- - - - L'entrée du cycle de vie à partir d'une classe qui implémente ModuleSettingsBase - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

        Public Overrides Sub LoadSettings()

                If (IsPostBack = False) Then
                    BindModules()
                    ...
                End If

        End Sub
 

 

- - - - Le DataBind de la ListBox - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 Private Sub BindModules()

            Dim objDesktopModuleController As New DesktopModuleController
            Dim objDesktopModuleInfo As DesktopModuleInfo = objDesktopModuleController.GetDesktopModuleByModuleName("ICI LE FRIENDLY NAME DU MODULE CIBLE")

            If Not (objDesktopModuleInfo Is Nothing) Then

                Dim objTabController As New TabController()
                Dim objTabs As ArrayList = objTabController.GetTabs(Me.PortalId)
                For Each objTab As DotNetNuke.Entities.Tabs.TabInfo In objTabs
                    If Not (objTab Is Nothing) Then
                        If (objTab.IsDeleted = False) Then
                            Dim objModules As New ModuleController
                            For Each pair As KeyValuePair(Of Integer, ModuleInfo) In objModules.GetTabModules(objTab.TabID)
                                Dim objModule As ModuleInfo = pair.Value
                                If (objModule.IsDeleted = False) Then
                                    If (objModule.DesktopModuleID = objDesktopModuleInfo.DesktopModuleID) Then
                                        If PortalSecurity.IsInRoles(objModule.AuthorizedEditRoles) = True And objModule.IsDeleted = False Then
                                            Dim strPath As String = objTab.TabName
                                            Dim objTabSelected As TabInfo = objTab
                                            While objTabSelected.ParentId <> Null.NullInteger
                                                objTabSelected = objTabController.GetTab(objTabSelected.ParentId, objTab.PortalID, False)
                                                If (objTabSelected Is Nothing) Then
                                                    Exit While
                                                End If
                                                strPath = objTabSelected.TabName & " -> " & strPath
                                            End While

                                            Dim objListItem As New ListItem

                                            objListItem.Value = objModule.TabID.ToString() & "-" & objModule.ModuleID.ToString()
                                            objListItem.Text = strPath & " -> " & objModule.ModuleTitle

                                            drpModuleID.Items.Add(objListItem)
                                        End If
                                    End If
                                End If
                            Next
                        End If
                    End If
                Next

            End If

            If (drpModuleID.Items.Count > 0) Then
             ... ' Ca veut dire qu'il n'y a pas de module cible, donc il faut en instancier un. Tu peux ajouter ici un message dans la listBox par exemple, avec les valeurs 0.
            End If

        End Sub

 

>>> Là donc, tu devrais avoir dans les paramètres de ton module une listBox qui te montre tous les modules qui peuvent servir de cible à ce module.

 

- - - - Fonction appellée lors du click sur Sauvegarder sur le contrôle paramètres - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 Public Overrides Sub UpdateSettings()

            Try

                SaveSettings()

            Catch exc As Exception    'Module failed to load
                ProcessModuleLoadException(Me, exc)
            End Try

        End Sub

- - - - Fonction SaveSettings() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

        Private Sub SaveSettings()

            Dim objModuleController As New ModuleController

            If (drpModuleID.Items.Count > 0) Then

                Dim values As String() = drpModuleID.SelectedValue.Split(Convert.ToChar("-"))

                If (values.Length = 2) Then
                    objModuleController.UpdateTabModuleSetting(Me.TabModuleId, "Nom de la constante pour le TabID", values(0))
                    objModuleController.UpdateTabModuleSetting(Me.TabModuleId, "Nom de la constante pour le moduleID", values(1))

                End If

            End If

...

Donc avec ce code, tu peux faire une Public Property myModuleID() :

        Private ReadOnly Property MyModuleID() As Integer
            Get
                Return CType(Settings("Nom de la constante pour le moduleID"), Integer)
            End Get
        End Property

 

Donc si tu suis mon exemple, dans le contrôle View du module, tu as :

 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

            Try

                If IsPostBack = False Then
          Dim objListProduits As New ListProduitController
            Dim colListProduits As List(Of ListProduitsInfo)
            colListProduits = objListProduits.GetListProduits(MyModuleId) ' Valeur tirée des Settings
...
' IF colListProduits is nothing then >>> Les modulesSettings sont encore indéfinis.

                End If

            Catch exc As Exception    'Module failed to load
                ProcessModuleLoadException(Me, exc)
            End Try

        End Sub

 

Bon courage

 

Seb

 
Nouveau message
05/01/2009 10:17
 

merci Seb,

 Très bien tu as plus que répondu a ma question....

Meilleurs voeux et bonne année!!!

 

 
Précédente
 
Suivante
HomeHomeForums DNNForums DNNDéveloppementDéveloppementModuleId - accès base de donnéeModuleId - accès base de donnée