IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Exécuter une fonction c# dans une vue


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 34
    Points : 24
    Points
    24
    Par défaut Exécuter une fonction c# dans une vue
    Bonjour,

    J'ai une fonction qui me permet d'exporter une liste de clients vers un fichier Excel. Cette fonction est stocké dans un classe ClientTools qui regroupe plusieurs fonctions utiles pour la gestion des clients. L'idéal serais d'exécuter cette fonction dans ma vue quand j'appuis sur un bouton mais sans recharger la vue. J'ai essayé de trouver des exemples en javascript mais soit cela ne correspondait pas, soit j'ai pas compris

    Vous avez des suggestions?

    Le bouton :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <button type="button" class="btn btn-success" id="export_to_excel"></button>


    Fonction d'export :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
          public static void ExportExcel(List<CLIENT> clients)
            {
     
                // Nom du fichier
                string excelFileName = "Fichier client.xlsx";
     
                // Licence EPPLUS
                ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
     
                // Lancement de Excel
                ExcelPackage excel = new ExcelPackage();
     
                // Création d'un feuille
                ExcelWorksheet workSheet = excel.Workbook.Worksheets.Add("Clients");
     
                // Définition de la dimension du tableau
                ExcelRange tableRange = workSheet.Cells[1, 1, clients.Count() + 1, 4];
     
                // En-tête du tableau 
                workSheet.Cells[1, 1].Value = "Designation";
                workSheet.Cells[1, 2].Value = "Adresse";
                workSheet.Cells[1, 3].Value = "Ville";
                workSheet.Cells[1, 4].Value = "Code postal";
     
                // Données du tableau
                int indexLigne = 2;
                foreach (var client in clients)
                {
                    workSheet.Cells[indexLigne, 1].Value = client.DESIGNATION
                    workSheet.Cells[indexLigne, 2].Value = client.ADRESSE);
                    workSheet.Cells[indexLigne, 3].Value = client.VILLE;
                    workSheet.Cells[indexLigne, 4].Value = client.CP;
     
                    indexLigne++;
                }
     
                // Création du tableau
                ExcelTable table = workSheet.Tables.Add(tableRange, "clientTable");
     
                // Largeur automatique des colonne
                for (int indexColonne = 1; indexColonne < 4; indexColonne++)
                {
                    workSheet.Column(indexColonne).AutoFit();
                    workSheet.Column(indexColonne).Width += 2;
                }
     
                // Alignement horizontal du texte
                tableRange.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
     
                // Alignement vertical du texte
                tableRange.Style.VerticalAlignment = ExcelVerticalAlignment.Center;
     
                // Style du tableau
                table.TableStyle = TableStyles.Medium2;
     
                // Sauvegarde du fichier
                excel.SaveAs(new FileInfo(excelFileName));
     
            }

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 066
    Points : 4 233
    Points
    4 233
    Par défaut
    Tu peux soumettre un formulaire en ajax

    https://docs.microsoft.com/fr-fr/asp...rm-data-part-1

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 34
    Points : 24
    Points
    24
    Par défaut
    Merci pour t'a réponse.
    j'ai un peu regarder le lien que tu m'as envoyé mais une question me turlupine : Si je passe par un formulaire Ajax pour exécuter ma fonction ExportExcel(), je vais devoir passé par un controller et donc recharger ma vue non?

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 066
    Points : 4 233
    Points
    4 233
    Par défaut
    Non étant donnée que l'appel est fait en javascript et aucune soumission serveur classique sera faite.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 34
    Points : 24
    Points
    24
    Par défaut
    D'accord, je vais creuser le sujet et je reviens ici quand j'aurai trouvé la solution.

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    Juste un bemol, attention car si le fichier est volumineux tu vas avoir des surprises (temps de response, timeouts, charge memoire sur le serveur, etc). Ce genre de solution ne fonctionne que pour des fichiers de taille raisonnable et qui sont rapides a generer.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 34
    Points : 24
    Points
    24
    Par défaut
    Petite update :
    J'arrive bien à exécuter ma fonction d'export mais ma liste de clients est toujours null. J'ai du rater quelques choses à la déclaration des paramètres d'entrées mais je ne sais pas où.

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function Exporter(lstclient) {
     
        var requeteExport = $.post('Exporter', lstclient)
            .success(function () {
                alert("Export excel réaliser avec succès");
            })
            .error(function () {
                alert("Problème lors de l'export Excel");
            });
     
    }

    Controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    [HttpPost]
     public void Exporter(List<CLIENT> clients)
     {
     
            ClientTool.ExportExcel(clients);
     
     }
    Bouton d'export :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <a class="btn btn-success" id="export_to_excel" onclick="Exporter('@Model.Resultat')">Export Excel</a>

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2018
    Messages : 34
    Points : 24
    Points
    24
    Par défaut
    Re-update :

    J'ai trouvé la solution pour corriger le problème de ma liste de clients toujours nul => j'avais mis des "" au lieu des '' après le onclick et j'ai passé en format Json ma liste de clients stocké dans mon model

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a type="button" class="btn btn-success"  id="export_to_excel" onclick='Exporter(@Html.Raw(Json.Encode(Model.Resultat)))'>Export Excel</a>

    Merci à tous pour votre aide, je sais maintenant utiliser une méthode d'un controller avec du Javascript

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Droits pour exécuter une vue qui pointe vers une autre base ?
    Par fredg9 dans le forum Administration
    Réponses: 3
    Dernier message: 08/11/2012, 13h21
  2. Exécution de fonction Javascript dans un s:if
    Par slim dans le forum Struts 1
    Réponses: 1
    Dernier message: 22/03/2012, 16h07
  3. comment exécuter ma fonction VBA dans Access
    Par kapotocho dans le forum VBA Access
    Réponses: 23
    Dernier message: 18/01/2008, 16h43
  4. Exécuter une fonction dans un thread
    Par Silverstone dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 23/06/2007, 12h24
  5. Exécuter une fonction PL/SQL dans SQL*PLUS
    Par soumou dans le forum PL/SQL
    Réponses: 5
    Dernier message: 03/11/2006, 00h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo