begin process at 2012 05 27 06:50:48
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ASP.Net

 > GESTIONNAIRE DE PLUGIN ASCX

GESTIONNAIRE DE PLUGIN ASCX


 Information sur la source

Note :
Aucune note
Catégorie :ASP.Net Source .NET ( DotNet ) Niveau :Débutant Date de création :15/07/2004 Vu / téléchargé :10 231 / 296

Auteur : jcq

Ecrire un message privé
Site perso
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Un exemple simple pour gérer dynamiquement des modules (usercontrol) à afficher dans vos pages.
J'utilise ce code pour des modules d'administration, ce qui permet d'ajouter rapidement des fonctionnalités à l'admin.
Le principe est simple:
- On liste dans un datalist les fichiers *.ascx
- Lorsque l'on clique dessus on les charges dynamiquement dans un panel

voilà c tout, c pas révolutionnaire mais ça peut aider !

Source

  • Télécharger le source (.ZIP) pour avoir le code complet.
  • Dans la page index.aspx en code behind:
  • -----------------------------------------------------
  • Imports System.IO
  • Public Class WebForm1
  • Inherits System.Web.UI.Page
  • #Region " Code généré par le Concepteur Web Form "
  • 'Cet appel est requis par le Concepteur Web Form.
  • <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
  • End Sub
  • Protected WithEvents panelModule As System.Web.UI.WebControls.Panel
  • Protected WithEvents dlModules As System.Web.UI.WebControls.DataList
  • Protected WithEvents cmdModule As System.Web.UI.WebControls.LinkButton
  • Protected WithEvents lblInfo As System.Web.UI.WebControls.Label
  • 'REMARQUE : la déclaration d'espace réservé suivante est requise par le Concepteur Web Form.
  • 'Ne pas supprimer ou déplacer.
  • Private designerPlaceholderDeclaration As System.Object
  • Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
  • 'CODEGEN : cet appel de méthode est requis par le Concepteur Web Form
  • 'Ne le modifiez pas en utilisant l'éditeur de code.
  • InitializeComponent()
  • End Sub
  • #End Region
  • Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  • 'Placez ici le code utilisateur pour initialiser la page
  • If Session("CurrentModules") Is Nothing Then
  • lblInfo.Text = "Aucun module de sélectionné"
  • lblInfo.Visible = True
  • Else
  • lblInfo.Visible = False
  • panelModule.Controls.Add(LoadControl(Session("CurrentModules")))
  • End If
  • mDisplay_Files()
  • End Sub
  • Private Sub dlModules_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataListCommandEventArgs) Handles dlModules.EditCommand
  • Session("CurrentModules") = Session("ListModules")(e.Item.ItemIndex)
  • Response.Redirect("index.aspx")
  • End Sub
  • Private Sub mDisplay_Files()
  • Dim sFiles As Array
  • Dim sFile As String
  • Dim Array As New ArrayList
  • sFiles = (Directory.GetFiles(Server.MapPath(""), "*.ascx"))
  • For Each sFile In sFiles
  • Array.Add(Path.GetFileName(sFile))
  • Next
  • 'Affichage des fichiers dans une datalist
  • With dlModules
  • .DataSource = Array
  • .DataBind()
  • .Dispose()
  • End With
  • 'Sauvegarde du tableau de fichier dans une session
  • 'pour gérer par la suite l'événement de la datalist
  • Session("ListModules") = Array
  • End Sub
  • End Class
  • Dans la page index.aspx en mode html:
  • -----------------------------------------------------
  • <%@ Page Language="vb" AutoEventWireup="false" Codebehind="index.aspx.vb" Inherits="gestionnaire_ascx.WebForm1"%>
  • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  • <HTML>
  • <HEAD>
  • <title>Module d'administration</title>
  • <meta content="True" name="vs_snapToGrid">
  • <meta content="True" name="vs_showGrid">
  • <LINK href="admin.css" type="text/css" rel="StyleSheet">
  • </HEAD>
  • <body>
  • <form id="module" runat="server">
  • <table cellSpacing="0" cellPadding="4" width="100%" border="0">
  • <tr>
  • <td vAlign="top" width="150">Modules installés:<br>
  • <asp:DataList id="dlModules" RepeatColumns="1" RepeatDirection="Vertical" ShowFooter="False" ShowHeader="False"
  • runat="server">
  • <ItemTemplate>
  • <font class="Intro11">
  • <asp:LinkButton id="cmdModule" CommandName="edit" runat="server">
  • <%# container.dataitem %>
  • </asp:LinkButton></font>
  • </ItemTemplate>
  • </asp:DataList>
  • </td>
  • <td vAlign="top">
  • <asp:Label id="lblInfo" runat="server">Label</asp:Label>
  • <asp:Panel id="panelModule" runat="server"></asp:Panel>
  • <br>
  • </td>
  • </tr>
  • </table>
  • </form>
  • </body>
  • </HTML>
  • Ensuite ben ajouter vos contrôles ascx dans le même répertoire que l'index... (voir le zip)
Télécharger le source (.ZIP) pour avoir le code complet.

Dans la page index.aspx en code behind:
-----------------------------------------------------

Imports System.IO

Public Class WebForm1
    Inherits System.Web.UI.Page

#Region " Code généré par le Concepteur Web Form "

    'Cet appel est requis par le Concepteur Web Form.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub
    Protected WithEvents panelModule As System.Web.UI.WebControls.Panel
    Protected WithEvents dlModules As System.Web.UI.WebControls.DataList
    Protected WithEvents cmdModule As System.Web.UI.WebControls.LinkButton
    Protected WithEvents lblInfo As System.Web.UI.WebControls.Label

    'REMARQUE : la déclaration d'espace réservé suivante est requise par le Concepteur Web Form.
    'Ne pas supprimer ou déplacer.
    Private designerPlaceholderDeclaration As System.Object

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN : cet appel de méthode est requis par le Concepteur Web Form
        'Ne le modifiez pas en utilisant l'éditeur de code.
        InitializeComponent()
    End Sub

#End Region

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Placez ici le code utilisateur pour initialiser la page

        If Session("CurrentModules") Is Nothing Then
            lblInfo.Text = "Aucun module de sélectionné"
            lblInfo.Visible = True
        Else
            lblInfo.Visible = False
            panelModule.Controls.Add(LoadControl(Session("CurrentModules")))
        End If

        mDisplay_Files()

    End Sub



    Private Sub dlModules_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataListCommandEventArgs) Handles dlModules.EditCommand
        Session("CurrentModules") = Session("ListModules")(e.Item.ItemIndex)
        Response.Redirect("index.aspx")
    End Sub



    Private Sub mDisplay_Files()

        Dim sFiles As Array
        Dim sFile As String
        Dim Array As New ArrayList


        sFiles = (Directory.GetFiles(Server.MapPath(""), "*.ascx"))
        For Each sFile In sFiles
            Array.Add(Path.GetFileName(sFile))
        Next


        'Affichage des fichiers dans une datalist
        With dlModules
            .DataSource = Array
            .DataBind()
            .Dispose()
        End With


        'Sauvegarde du tableau de fichier dans une session
        'pour gérer par la suite l'événement de la datalist
        Session("ListModules") = Array

    End Sub


End Class



Dans la page index.aspx en mode html:
-----------------------------------------------------
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="index.aspx.vb" Inherits="gestionnaire_ascx.WebForm1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
	<HEAD>
		<title>Module d'administration</title>
		<meta content="True" name="vs_snapToGrid">
		<meta content="True" name="vs_showGrid">
		<LINK href="admin.css" type="text/css" rel="StyleSheet">
	</HEAD>
	<body>
		<form id="module" runat="server">
			<table cellSpacing="0" cellPadding="4" width="100%" border="0">
				<tr>
					<td vAlign="top" width="150">Modules installés:<br>
						<asp:DataList id="dlModules" RepeatColumns="1" RepeatDirection="Vertical" ShowFooter="False" ShowHeader="False"
							runat="server">
							<ItemTemplate>
								<font class="Intro11">
									<asp:LinkButton id="cmdModule" CommandName="edit" runat="server">
										<%# container.dataitem %>
									</asp:LinkButton></font>
							</ItemTemplate>
						</asp:DataList>
					</td>
					<td vAlign="top">
						<asp:Label id="lblInfo" runat="server">Label</asp:Label>
						<asp:Panel id="panelModule" runat="server"></asp:Panel>
						<br>
					</td>
				</tr>
			</table>
		</form>
	</body>
</HTML>



Ensuite ben ajouter vos contrôles ascx dans le même répertoire que l'index... (voir le zip)



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source .NET (Dotnet) AJOUT DE METATAGS (KEYWORD) AUX MASTER PAGE ET ENFANT
Source .NET (Dotnet) FAIRE UNE PAUSE DANS UNE BOUCLE OU AUTRE...
Source avec Zip Source .NET (Dotnet) UTILISATION DES FICHIERS RESSOURCES POUR DU MULTILIGNUE
Source avec Zip Source .NET (Dotnet) NAVIGUER DANS LES DOSSIERS

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) GUESTBOOK AVEC GRIDVIEW par DanMor498
Source avec Zip CHECKED DROPDOWNLIST par fredzool
Source avec Zip Source avec une capture Source .NET (Dotnet) GRIDVIEW WITH TREEVIEW AND CALLBACK par fredzool
Source avec Zip APPELLER UN WEBSERVICE DEPUIS JAVASCRIPT par fredzool
Source avec Zip Source .NET (Dotnet) MONEY TEXTBOX WITH EMBEDED JAVASCRIPT par fredzool

Commentaires et avis

Commentaire de Focalizer le 16/07/2004 11:02:59

Salut,

Lorsque je met ton code, j'optient l'erreur suivante :

Message d'erreur de l'analyseur: Impossible de charger le type 'gestionnaire_ascx.WebForm1'.

Erreur source:


Ligne 1 :  <%@ Page Language="vb" AutoEventWireup="false" Codebehind="index.aspx.vb" Inherits="gestionnaire_ascx.WebForm1"%>
Ligne 2 :  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
Ligne 3 :  <HTML>


Peux-tu m'aider ?

Merci d'avance

Commentaire de jcq le 16/07/2004 12:20:24

est-ce que tu as téléchargé le projet ?(dans le zip).

Commentaire de Focalizer le 16/07/2004 19:26:44

Oui, mais c'est bon je viens de comprendre pourquoi cela merdais. Je n'avait pas config mon rep comme rep virtuel sous iis;

Ce qui donc fesait qu'il ne trouvais pas le rep /bin

Merci pour cette source, elle semble être assez interresante.

Commentaire de ToshiBaba le 20/12/2006 18:22:26

A propos du répertoire bin, voici un excellent article en anglais (framework 1.1) :
http://www.hanselman.com/blog/MovingTheCodeBehindAssembliesDLLsToADifferentFolderThanBINWithASPNET11.aspx

Ainsi vous pourrez avoir les dll de vos plugins ailleurs que dans le /bin de l'application principale :)

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales