none
j'ai besoin de votre aide sur une question de sommaire RRS feed

  • Question

  • bonjour tout le monde;

    j'ai un sommaire qui comporte plusieurs linkbouton et chaque linkbouton me permet d'accéder à un pdf déja ajouté.j'ai reussi à acceder à un seul fichier mais les autres non,car le code que j'ai fait correspondant à un seul fichiers seulement.je voudrai s'avoir est ce que quelqu'un sait comment faire pour que je puisse accéder à tous les fichiers apparus dans mon sommaire par un simple clique dessous.merci bcp pour votre aide

    mercredi 18 mai 2011 10:08

Réponses

  • Dommage de ne pas avoir répondu à la question que j'avais posé ;-)

    Le principe est relativement le même :
    - on peut utiliser le contrôle Repeater qui fait partie du Power Pack (http://msdn.microsoft.com/en-us/vbasic/bb735936.aspx) (et qui est un contrôle .NET donc utilisable également en C#)
    - ou créer dynamiquement le contrôle dans le formulaire.

    Une ListBox ou une ListView pourrait peut-être être plus adaptée notamment pour gérer le défilement si le nombre de PDFs est important (notamment le listview permet de faire une interface très proche d'un explorateur de fichiers).

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    vendredi 20 mai 2011 14:04
    Modérateur
  • Bonjour,

    J’ai vu sur un autre thread que vous avez dit que les fichiers .pdf sont stockés dans la base des données aussi que sur le disque. Si vous les avez seulement dans la base des données, quand on clique sur le nom de votre fichier il faut tout d’abord créer un fichier temporaire, mais si vous l’avez déjà sur le disque, vous pouvez utiliser directement ce que vous avez sur le disque.

     

    Puis, il faut utiliser la fonction System.Diagnostics.Process.Start("lien\My-PDF-file.pdf");

     

    Cordialement,

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    vendredi 20 mai 2011 13:34
  • alors hajar ton probleme est simple a realiser tu doit tous simplement generer c 'est linkbutton par code d'une maniere dynamic et je vai te citer un petit exemple bien detaillé :

    - on va dire que les nom de ces pdf + leur chemin existe dans une table ou dans un fichier peut import ou il se trouve l'important c"est qu'on doit savoir le chemin de chaqu'un + un id unique
    -on va utiliser une datatable / hashtable/arraylist peut import la moyen de stockag
    - dans cet exemple on utilisera une datatable car forcement c pdf seront stocké dans une table

     

        public void remplirDtFichierPDF()
        {
          dtFilePDF = new DataTable();
          dtFilePDF.Columns.Add("ID");
          dtFilePDF.Columns.Add("fileName");
          dtFilePDF.Columns.Add("directory");
          //ici je vai remplir cette datatble avec quellue enregistrement
          // mais toi t'aura deja la datatable rempli apartir de la base
          // la colonne ID devrai etre unique car avec ce ID on lier la datetable et le link labele
          DataRow dtr1 = dtFilePDF.NewRow();
          DataRow dtr2 = dtFilePDF.NewRow();
          DataRow dtr3 = dtFilePDF.NewRow();
    
          dtr1["ID"] = 1;
          dtr1["directory"] = "directory1";
          dtr1["fileName"] = "File 1";
    
          dtr2["ID"] = 2;
          dtr2["directory"] = "directory2";
          dtr2["fileName"] = "File 2";
    
          dtr3["ID"] = 3;
          dtr3["directory"] = "directory3";
          dtr3["fileName"] = "File 3";
    
          dtFilePDF.Rows.Add(dtr1);
          dtFilePDF.Rows.Add(dtr2);
          dtFilePDF.Rows.Add(dtr3);
        }
    
        public LinkLabel generateLink(string id,string fileName)
        {
    
          LinkLabel lnk = new LinkLabel();
          //on a utiliser link_ au depart car une variable ne doit pas commencer par un nombre
    
          lnk.Name = "link_" + id;
          // deonner le texte de link
          lnk.Text = fileName;
          lnk.Click += new EventHandler(this.Link_click);
          return lnk;
    
          // tu peut metre tous ce que tu veu ici pour fair un design sympa
        }
        public void Link_click(object sender, EventArgs e)
        {
          LinkLabel lnk = (LinkLabel)sender;
          string[] str = lnk.Name.Split('_');
    
    
          for (int i = 0; i < dtFilePDF.Rows.Count; i++)
          {
            if (str[1] == dtFilePDF.Rows[i]["ID"].ToString())
            {
              System.Diagnostics.Process.Start(dtFilePDF.Rows[i]["directory"].ToString());
              return;
            }
          }
          
          
        }
    
    
        public void displayLinkFilePdf(Panel pnl)
        {
          this.remplirDtFichierPDF();
    
          // dans ton formulaire tu va avoir un panel que tu va passer en parametre (cette panel doit avoir la proprieté autoscroll = true
          // pour afficher les link a l'interieur
    
          //au cas ou on va afficher ces link Verticalement on va utiliser un TableLayoutPanel 
        
          //au cas ou on va afficher ces link Horizontalemnt on va utiliser un FlowLayoutPanel 
        
          // verticalement ou horizentalemnt c pareil
    
          TableLayoutPanel tblPanel = new TableLayoutPanel();
          tbPanel.Dock = DockStyle.Top;
          for (int i = 0; i < dtFilePDF.Rows.Count; i++)
          {
            // a chaque fois qu'on va ajouter un controle dans table layout panel lui automatiquement il va le mettre dans une nouvelle ligne qui va creer 
            tblPanel.Controls.Add(this.generateLink(dtFilePDF.Rows[i]["ID"].ToString(), dtFilePDF.Rows[i]["fileName"].ToString()));
          }
          pnl.Controls.Clear();
          pnl.Controls.Add(tblPanel);
        }
    
    

    alors c un petit exemple pour creer dans controle dynamiquement inspire toi de ce exemple pour pouvoir faire une truck sympa par ce que j t donné une chose basic mais sa marche a 100% tu doit juste metre une panel dans ton formulaire et mettre de chemin qui exist et tester mon code sa va marcher a 100%

     

    Cordialement

    MrH.Net

     

    • Proposé comme réponse MrH.Net samedi 21 mai 2011 14:41
    • Marqué comme réponse Ciprian Duduiala mardi 24 mai 2011 05:49
    samedi 21 mai 2011 14:20

Toutes les réponses

  • Bonjour,

    Pas très clair. Il faudrait par exemple que les fichiers soient dans une liste et généré dynamiquement un link button pour chaque entrée de cette liste par exemple avec un contrôle Repeater. Je crois comprendre que le code actuel manipule juste un et un seul linkbutton (et c'est bien une application ASP.NET ? Le forum "ASP.NET" pourrait être plus approprié que le forum "Visual C#")


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    mercredi 18 mai 2011 10:55
    Modérateur
  • bonjour patrice

    je travaille en c# .mon pb c que j'ai un  sommaire qui comporte des pdf que j'ai déja stocké dans la base de données,je voudrai que à chaque sois que je clique sur un pdf dans le sommaire,ce dernier s'ouvre automatiquement.j'éspère que je me suis fait bien comprendre.merci

    mercredi 18 mai 2011 11:57
  • bonjour tout le monde;

    je me demendais si quelqu'un sait comment faire (code c#)un sommaire de pdf,et à chaque fois que je clique sur un des pdf celui ci s'ouvre.merci beaucoup pour votre aide.

    jeudi 19 mai 2011 08:51
  • Bonjour,

    Vous avez déjà mis cette question avec plus des détails sur ce thread. Je vais fusionner les deux et s’il vous plaît n’ouvrez pas plusieurs threads sur le même sujet parce qu’il est difficile pour la communauté à suivre la suite de vos démarches. Merci beaucoup !

    Cordialement,

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    jeudi 19 mai 2011 09:33
  • C'est bien un site web WebForms ? Ce "sommaire" est bien une liste de fichiers stockée dans une table de base de données ? Le principe de base pourrait être d'avoir donc une page avec un Repeater :

      <asp:Repeater id="Sommaire" runat="server">
        <ItemTemplate>
          <asp:LinkButton runat="server" id="lnk" Text='<%#Eval("Text")%>' CommandArgument='<%#Eval("Argument")%>' /><br />
        </ItemTemplate>
      </asp:Repeater>
    
    

    Côté code :

    public partial class _Default : System.Web.UI.Page
    {
      class Data
      {
        public string Text { get; set; }
        public int Argument { get; set; }
      }
      protected void Page_Load(object sender, EventArgs e)
      {
        Sommaire.ItemCommand += Sommaire_ItemCommand;
        if (!IsPostBack)
        {
          Sommaire.DataSource = new List<Data> { new Data() { Text = "A", Argument = 1 }, new Data() { Text = "B", Argument = 2 } };
          Sommaire.DataBind();
        }
    
      }
      private void Sommaire_ItemCommand(object sender ,CommandEventArgs e)
      {
        Response.Redirect("~/SomeWhere/" + e.CommandArgument + ".pdf");
      }
    
    }
    

    Donc :
    - Le LinkButton est dans un Repeater pour générer une ligne par donnée source (les données sont bien sûr prises de la base, là je les génère en dur pour la démo)
    - ItemCommand permet de récupérer le pdf qui sera à afficher via l'argument utilisé sur le LinkButton

    Je ne connais pas trop le contexte mais un simple lien (asp:HyperLink au lieu de asp:LinkButton) serait sans doute suffisant (inutile de repasser sur le serveur, on clique un "vrai" lien et le navigateur var directement chercher le PDF qui se situe à l'emplacement correspondant).

     

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    jeudi 19 mai 2011 11:22
    Modérateur
  • bonsoir patrice,

    premièrement je voulais te remercier d'avoir répondu à ma question.en ce qui concerne ma problématique;le sommaire je voudrai le faire en mode formulaire non pas web car mon projet et en mode windows form.donc si tu peux m'aider encore plus ça serai génial.et merci encore

    vendredi 20 mai 2011 00:02
  • Bonjour,

    J’ai vu sur un autre thread que vous avez dit que les fichiers .pdf sont stockés dans la base des données aussi que sur le disque. Si vous les avez seulement dans la base des données, quand on clique sur le nom de votre fichier il faut tout d’abord créer un fichier temporaire, mais si vous l’avez déjà sur le disque, vous pouvez utiliser directement ce que vous avez sur le disque.

     

    Puis, il faut utiliser la fonction System.Diagnostics.Process.Start("lien\My-PDF-file.pdf");

     

    Cordialement,

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    vendredi 20 mai 2011 13:34
  • Dommage de ne pas avoir répondu à la question que j'avais posé ;-)

    Le principe est relativement le même :
    - on peut utiliser le contrôle Repeater qui fait partie du Power Pack (http://msdn.microsoft.com/en-us/vbasic/bb735936.aspx) (et qui est un contrôle .NET donc utilisable également en C#)
    - ou créer dynamiquement le contrôle dans le formulaire.

    Une ListBox ou une ListView pourrait peut-être être plus adaptée notamment pour gérer le défilement si le nombre de PDFs est important (notamment le listview permet de faire une interface très proche d'un explorateur de fichiers).

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    vendredi 20 mai 2011 14:04
    Modérateur
  • alors hajar ton probleme est simple a realiser tu doit tous simplement generer c 'est linkbutton par code d'une maniere dynamic et je vai te citer un petit exemple bien detaillé :

    - on va dire que les nom de ces pdf + leur chemin existe dans une table ou dans un fichier peut import ou il se trouve l'important c"est qu'on doit savoir le chemin de chaqu'un + un id unique
    -on va utiliser une datatable / hashtable/arraylist peut import la moyen de stockag
    - dans cet exemple on utilisera une datatable car forcement c pdf seront stocké dans une table

     

        public void remplirDtFichierPDF()
        {
          dtFilePDF = new DataTable();
          dtFilePDF.Columns.Add("ID");
          dtFilePDF.Columns.Add("fileName");
          dtFilePDF.Columns.Add("directory");
          //ici je vai remplir cette datatble avec quellue enregistrement
          // mais toi t'aura deja la datatable rempli apartir de la base
          // la colonne ID devrai etre unique car avec ce ID on lier la datetable et le link labele
          DataRow dtr1 = dtFilePDF.NewRow();
          DataRow dtr2 = dtFilePDF.NewRow();
          DataRow dtr3 = dtFilePDF.NewRow();
    
          dtr1["ID"] = 1;
          dtr1["directory"] = "directory1";
          dtr1["fileName"] = "File 1";
    
          dtr2["ID"] = 2;
          dtr2["directory"] = "directory2";
          dtr2["fileName"] = "File 2";
    
          dtr3["ID"] = 3;
          dtr3["directory"] = "directory3";
          dtr3["fileName"] = "File 3";
    
          dtFilePDF.Rows.Add(dtr1);
          dtFilePDF.Rows.Add(dtr2);
          dtFilePDF.Rows.Add(dtr3);
        }
    
        public LinkLabel generateLink(string id,string fileName)
        {
    
          LinkLabel lnk = new LinkLabel();
          //on a utiliser link_ au depart car une variable ne doit pas commencer par un nombre
    
          lnk.Name = "link_" + id;
          // deonner le texte de link
          lnk.Text = fileName;
          lnk.Click += new EventHandler(this.Link_click);
          return lnk;
    
          // tu peut metre tous ce que tu veu ici pour fair un design sympa
        }
        public void Link_click(object sender, EventArgs e)
        {
          LinkLabel lnk = (LinkLabel)sender;
          string[] str = lnk.Name.Split('_');
    
    
          for (int i = 0; i < dtFilePDF.Rows.Count; i++)
          {
            if (str[1] == dtFilePDF.Rows[i]["ID"].ToString())
            {
              System.Diagnostics.Process.Start(dtFilePDF.Rows[i]["directory"].ToString());
              return;
            }
          }
          
          
        }
    
    
        public void displayLinkFilePdf(Panel pnl)
        {
          this.remplirDtFichierPDF();
    
          // dans ton formulaire tu va avoir un panel que tu va passer en parametre (cette panel doit avoir la proprieté autoscroll = true
          // pour afficher les link a l'interieur
    
          //au cas ou on va afficher ces link Verticalement on va utiliser un TableLayoutPanel 
        
          //au cas ou on va afficher ces link Horizontalemnt on va utiliser un FlowLayoutPanel 
        
          // verticalement ou horizentalemnt c pareil
    
          TableLayoutPanel tblPanel = new TableLayoutPanel();
          tbPanel.Dock = DockStyle.Top;
          for (int i = 0; i < dtFilePDF.Rows.Count; i++)
          {
            // a chaque fois qu'on va ajouter un controle dans table layout panel lui automatiquement il va le mettre dans une nouvelle ligne qui va creer 
            tblPanel.Controls.Add(this.generateLink(dtFilePDF.Rows[i]["ID"].ToString(), dtFilePDF.Rows[i]["fileName"].ToString()));
          }
          pnl.Controls.Clear();
          pnl.Controls.Add(tblPanel);
        }
    
    

    alors c un petit exemple pour creer dans controle dynamiquement inspire toi de ce exemple pour pouvoir faire une truck sympa par ce que j t donné une chose basic mais sa marche a 100% tu doit juste metre une panel dans ton formulaire et mettre de chemin qui exist et tester mon code sa va marcher a 100%

     

    Cordialement

    MrH.Net

     

    • Proposé comme réponse MrH.Net samedi 21 mai 2011 14:41
    • Marqué comme réponse Ciprian Duduiala mardi 24 mai 2011 05:49
    samedi 21 mai 2011 14:20
  • merci beaucoup MrH.Net je vais essayé de testé ton code éspérons que celui ci marche
    lundi 23 mai 2011 00:40
  • si sa marche chez toi veuilez marqué ma reponse pour que les autres peuvent l'utiliser

     

    lundi 23 mai 2011 17:22