begin process at 2012 05 27 15:25:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

ASP.NET

 > 

Scripting

 > 

VBScript

 > 

Cacher des parties de mon repeater .


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Cacher des parties de mon repeater .

vendredi 24 septembre 2010 à 08:58:14 | Cacher des parties de mon repeater .

Skunkz

Bonjour.
Je vous explique mon probléme :
j'ai du coder une page qui affiche une liste d'applications , contenant des groupes , qui eux memes contiennent des fichiers.
J'ai donc choisir d'utiliser un repeater , que j'alimente via une requete sql pour afficher mes données. Voici le repeater :
Code ASP.NET :
  <asp:Repeater ID="liste_app" runat="server" OnItemCommand="_liste_app_ItemCommand">
            <ItemTemplate>
                <table>
                    <tr id='<%# Databinder.Eval(Container.DataItem,"APP_ID","tr_app{0}" ) %>'>
                        <td width="350" style="color: red">
                            <asp:Label ID="app_libelle" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "APP_LIBELLE")%> '> </asp:Label>
                            <asp:Label ID="app_id" runat="server" Visible="false" Text='<%#DataBinder.Eval(Container.DataItem, "APP_ID")%> '></asp:Label>
                            <asp:ImageButton Style="color: Black" runat="server" ID="link_app" ImageUrl="~/Images/moinsapp.bmp" />
                            </asp:ImageButton>
                        </td>
                    </tr>
                    <tr bgcolor="#ffffc0">
                        <td width="350">
                            <asp:Label ID="grp_admin" runat="server" Visible="false" Text='<%#DataBinder.Eval(Container.DataItem, "GRP_ADMIN")%> '></asp:Label>
                            <asp:ImageButton Style="color: Black" runat="server" ID="link_grp" ImageUrl="~/Images/moinsgrp.bmp">
                            </asp:ImageButton>
                            <asp:Label ID="grp_libelle" runat="server" Text=' <%#DataBinder.Eval(Container.DataItem, "GRP_LIBELLE")%>  '></asp:Label>
                            <asp:Label ID="grp_id" runat="server" Visible="false" Text='<%#DataBinder.Eval(Container.DataItem, "GRP_ID")%> '></asp:Label>
                            <asp:ImageButton ID="admin_btn" Visible="false" runat="server" ImageUrl="~/Images/admin_btn.bmp" />
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <asp:Image ID="noinfo" runat="server" Visible="false" ImageUrl="~/Images/noinfo.bmp" />
                            <asp:ImageButton ID="info_btn" runat="server" Visible="false" ImageUrl="~/Images/info.bmp" />
                            <asp:HyperLink Style="color: Black" runat="server" ID="fic_libelle" NavigateUrl='<%#DataBinder.Eval(Container.DataItem, "FIC_LIEN")%> '
                                Text='<%#DataBinder.Eval(Container.DataItem, "FIC_LIBELLE")%> '></asp:HyperLink>
                            <asp:Label ID="fic_info" runat="server" Visible="false" Text='<%#DataBinder.Eval(Container.DataItem, "FIC_INFO")%> '></asp:Label>
                            <asp:Label ID="fic_id" runat="server" Visible="false" Text='<%#DataBinder.Eval(Container.DataItem, "FIC_ID")%> '></asp:Label>
                        </td>
                    </tr>
                </table>
            </ItemTemplate>
        </asp:Repeater>

Ce que j'aimerais obtenir , c'est la possiblité , en cliquant sur le bouton "link_app" de pouvoir cacher les groupes et les fichiers contenue dans cette application.
Et j'ai l'impression qu'il est impossible de gérer un Onclick dans un repeater , donc je suis bloquer =/
J'aurais donc voulu savoir si vous aviez quelques pistes pour m'aider a régler ça.

Merci d'avance !
vendredi 24 septembre 2010 à 10:28:17 | Re : Cacher des parties de mon repeater .

Netlink

Membre Club
Bonjour,

Avez-vous regardé du côté de l'évènement ItemCommand du Repeater ?

Matt - Consultant .NET
vendredi 24 septembre 2010 à 10:43:37 | Re : Cacher des parties de mon repeater .

Skunkz

J'ai effectivement essayé quelque chose de ce coté la, mais je n'ai pas réussi a récuperer l'index des boutons sur lequels j'ai cliqué.
vendredi 24 septembre 2010 à 12:33:26 | Re : Cacher des parties de mon repeater .

Netlink

Membre Club
En reproduisant un exemple utilisant votre code, je n'ai effectivement pas réussi à déclencher l'évènement ItemCommand lors du click sur un ImageButton. Bizarre. Après une recherche sur Google il semble que ce ne soit pas possible.

En revanche, grâce à l'attribut OnClick du contrôle ImageButton, l'évènement lié au bouton se déclenche correctement.

Donc je pense que vous devriez regarder plutôt de ce côté-là. Vous pourrez dans tous les cas récupérer le contrôle à l'origine du click grâce au paramètre sender de la méthode qui va gérer votre évènement.


Matt - Consultant .NET
vendredi 24 septembre 2010 à 22:12:19 | Re : Cacher des parties de mon repeater .

fonio

Bonjour, ce cas m'a interessé, alors voilà :

Code ASP.NET :
<asp:ImageButton Style="color: Black" runat="server" ID="link_app" ImageUrl="~/Images/moinsapp.bmp" OnClick="link_grp_Click"/></asp:ImageButton>


Code Visual Basic :
Protected Sub liste_app_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles liste_app.ItemCreated
  If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
    e.Item.ID = "Ligne_" & e.Item.ItemIndex
  End If
End Sub


Protected Sub link_grp_Click(ByVal sender As Object, ByVal e As ImageClickEventArgs)
	'MsgBox(sender.uniqueID)
	Dim lig As RepeaterItem = Page.FindControl(sender.uniqueID.replace("$link_grp", ""))
	lig.Visible = False
End Sub



Explication :
- j'utilise l'évenement "ItemCreated" du repeater pour donner une ID à chaque ligne, incrémentée via "e.Item.ItemIndex" (de 0 à nb de lignes - 1)
- j'utilise effectivement le paramètre "sender" de la méthode "link_grp_Click" pour récupérer l'uniqueID de l'ImageButton, à partir duquel je déduis celle de la ligne en effectuant un Replace
- j'instancie cette ligne gràce à "Page.FindControl(UniqueID de la ligne)", puis ".Visible = False" et le tour est joué !
dimanche 26 septembre 2010 à 13:48:45 | Re : Cacher des parties de mon repeater .

jesusonline

Membre Club Administrateur CodeS-SourceS
Bonjour,

l'évenement ItemCommand fonctionne avec un ImageButton. Par contre, je pense qu'il faut renseigner la propriété CommandName.

Voici un exemple de code qui fonctionne :


ASPX :

Code ASP.NET :
        <asp:Repeater runat="server" ID="rptPouet" OnItemCommand="rptPouet_ItemCommand">
            <HeaderTemplate><ul></HeaderTemplate>
            <FooterTemplate></ul></FooterTemplate>
            <ItemTemplate>
                <li>
                    <%#((Person)Container.DataItem).ToString() %>
                    <asp:ImageButton runat="server" CommandName="Foo" CommandArgument="<%#((Person)Container.DataItem).PersonId %>" ImageUrl="~/images/foo.png" />
                </li>
            </ItemTemplate>
        </asp:Repeater>
        <asp:label runat="server" ID="lblTest" />


Code Behind :

Code C# :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public class Person
{
    public int PersonId { get; set; }
    public String FirstName { get; set; }
    public String LastName { get; set; }

    public override string ToString()
    {
        return String.Format("{0} {1}", this.FirstName, this.LastName);
    }
}

public partial class _Default : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            this.BindData();
        }
    }

    protected void rptPouet_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        this.lblTest.Text = String.Format("CommandName = {0} ; CommandArgument = {1}", e.CommandName, e.CommandArgument);
    }

    private void BindData()
    {

        Person[] persons = new Person[]{ 
            new Person(){ FirstName ="firstName1", LastName="lastName1", PersonId= 1}, 
            new Person(){ FirstName ="firstName2", LastName="lastName2", PersonId= 2}
        };

        this.rptPouet.DataSource = persons;
        this.rptPouet.DataBind();
    }
}


Pour cacher une partie du repeater, il y a plusieurs solutions. Au niveau de l'itemCommand, on peut faire un e.Item.FindControl("xxx").Visible=false. Ou alors rebinder le repeater et s'abonner à l'evenement ItemDataBound.

____________________________________________
Cyril - MVP ASP.net - webSite


Cette discussion est classée dans : cacher, fichiers, groupes, repeater, parties


Répondre à ce message

Sujets en rapport avec ce message

Afficher la progression d'un téléchargement en asp [ par lolofb ] Bonjour,Je n'ai aucun problème pour réaliser des upload de fichiers sur mon serveur (j'utilise aspSmartUpload).Par contre, je voudrais savoir comment Afficher la progression d'un téléchargement en asp [ par lolofb ] Bonjour,Je n'ai aucun problème pour réaliser des upload de fichiers sur mon serveur (j'utilise aspSmartUpload).Par contre, je voudrais savoir comment Afficher la progression d'un téléchargement en asp [ par lolofb ] Bonjour,Je n'ai aucun problème pour réaliser des upload de fichiers sur mon serveur (j'utilise aspSmartUpload).Par contre, je voudrais savoir comment Afficher la progression d'un téléchargement en asp [ par lolofb ] Bonjour,Je n'ai aucun problème pour réaliser des upload de fichiers sur mon serveur (j'utilise aspSmartUpload).Par contre, je voudrais savoir comment generer fichiers HTML [ par maya ] J'aimerais générer un fichier HTML à partir d'1 page asp...Jusqu'ici pas trop de gros soucis , si ce n'est que j'aimrais que ce fichier porte le nom d generer fichiers HTML [ par maya ] J'aimerais générer un fichier HTML à partir d'1 page asp...Jusqu'ici pas trop de gros soucis , si ce n'est que j'aimrais que ce fichier porte le nom d generer fichiers HTML [ par maya ] J'aimerais générer un fichier HTML à partir d'1 page asp...Jusqu'ici pas trop de gros soucis , si ce n'est que j'aimrais que ce fichier porte le nom d generer fichiers HTML [ par maya ] J'aimerais générer un fichier HTML à partir d'1 page asp...Jusqu'ici pas trop de gros soucis , si ce n'est que j'aimrais que ce fichier porte le nom d Créer des fichiers PDF dynamiquement. [ par fellow ] Quelqu' un connait-il une méthode pour créer dynamiquement des fichiers au format PDF ?C' est à dire sur le poste serveur évidemment ...Merci cacher l'adresse email sous outlook [ par Arken ] bonjour, j'aimerai savoir si on peut mettre un autre texte à la place de l'adresse email sous outlook, en faisant un mailto, en html si possible, et s


Nos sponsors


Sondage...

Comparez les prix

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 : 5,320 sec (3)

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