2011-02-18 8 views
6

J'ai du mal à trouver un exemple ou un code pour pouvoir créer un fichier CSV ou un fichier texte dans Silverlight en tant que lien téléchargeable.Créer un téléchargement CSV en utilisant silverlight 4 et C#

Je l'ai fait dans ASP.net mais je n'arrive pas à comprendre comment utiliser Silverlight. Suis-je en train de faire tourner mes roues? Ou devrais-je simplement créer une page ASP? Y a-t-il un moyen de le faire en C#?

Je voudrais faire cela de la bonne manière et pas un travail de hack et j'apprécierai tout commentaire et conseil.

Dans ASP Je AURAIT utilisé:

Response.ContentType = "text/csv" 
Response.AddHeader "Content-disposition", "attachment;filename=""EPIC0B00.CSV""" 
Response.write.... 
+0

Dans les situations comme celle-ci, j'utilise un ashx-handler et un lien d'une application silverlight. – vorrtex

Répondre

6

j'ai pu résoudre avec le code très similaire comme ci-dessus, tout y compris les références nécessaires donc il n'y a pas d'hypothèses faites, plus cela est une réelle exemple de travail.

using System; 
using System.IO; 
using System.Windows; 
using System.Windows.Controls; 
.... 

    private void btnSave_Click(object sender, RoutedEventArgs e) 
    { 
     string data = ExportData(); // This is where the data is built 
     SaveFileDialog sfd = new SaveFileDialog() 
     { 
     DefaultExt = "csv", 
     Filter = "CSV Files (*.csv)|*.csv|All files (*.*)|*.*", 
     FilterIndex = 1 
     }; 
     if (sfd.ShowDialog() == true) 
     { 
      using (Stream stream = sfd.OpenFile()) 
      { 
       using (StreamWriter writer = new StreamWriter(stream)) { 
       writer.Write(data); //Write the data :) 
       writer.Close(); 
       } 
       stream.Close(); 
      } 
     } 
    } 

    private string ExportData() 
    { 
     return "!this is the exported text"; 
    } 
+0

Bon point l'homme! +1 –

1

Silverlight est une technologie côté client. Vous ne pouvez pas pointer un navigateur dessus et "télécharger" un CSV ou n'importe quoi d'autre.

A la place, vous utilisez la classe SaveFileDialog. Voici un morceau de code basé sur la documentation MSDN pour elle: -

SaveFileDialog csvDialog; 
public Page() 
{ 
    InitializeComponent(); 
    csvDialog= new SaveFileDialog(); 
    csvDialog.Filter = "CSV Files| *.csv"; 
    csvDialog.DefaultExt = "csv"; 
} 

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    bool? result = csvDialog.ShowDialog(); 
    if (result == true) 
    { 
     System.IO.Stream fileStream = csvDialog.OpenFile(); 
     System.IO.StreamWriter sw = new System.IO.StreamWriter(fileStream); 

     // Call a method to write your CSV content to the sw here 

     sw.Flush(); 
     sw.Close(); 
    } 
} 
Questions connexes