Из Silverlight создайте файл для сохранения на компьютере пользователя, не обращаясь к серверу. - PullRequest
3 голосов
/ 02 ноября 2010

У меня есть приложение Silverlight, в котором я хочу выполнить экспорт некоторых данных.Формат вывода файла, скорее всего, будет PDF или Word.Но давайте предположим, что я могу сгенерировать содержимое файла соответствующим образом.Я хочу иметь возможность открыть диалоговое окно «Сохранить», чтобы пользователь мог сохранить эти данные или открыть их непосредственно в программе.

Теперь, очевидно, я мог бы просто запустить пользователя по URL-адресу и выполнить экспорт на сервере.и измените тип ответа MIME на Word или PDF.Это будет работать просто отлично.Однако камнем преткновения является то, что у меня уже есть правильные данные на клиенте (включая сложные фильтры и т. П.), И воссоздание этого набора данных на сервере просто для того, чтобы снова отправить его клиенту, кажется глупым, если я могу избежать этого.1003 *

Есть ли способ взять существующий набор данных в Silverlight, сгенерировать файл Word или PDF и перенести его на компьютер пользователя?Я мог бы также сделать это из JavaScript, используя взаимодействие с браузером от Silverlight.Я не хочу использовать Silverlight вне браузера.

1 Ответ

2 голосов
/ 02 ноября 2010

Вам необходимо использовать SaveFileDialog класс .Обратите внимание, что из-за настроек безопасности Silverlight SaveFileDialog необходимо открывать в результате пользовательского события (например, нажатия кнопки).

Диалог можно настроить (если хотите), используя такие свойства, как DefaultExt или Filter, прежде чем отобразить его с помощью ShowDialog() метод.

Метод ShowDialog() вернет true, если пользователь правильно указал файл и нажал OK.В этом случае вы можете вызвать метод SaveFileDialog.OpenFile(), чтобы получить доступ к этому файлу и записать в него свои данные.

Пример:

private void Button_Click(object sender, EventArgs e)
{
   SaveFileDialog saveDialog = new SaveFileDialog();
   if (saveDialog.ShowDialog())
   {
      System.IO.Stream fileStream = textDialog.OpenFile();
      System.IO.StreamWriter sw = new System.IO.StreamWriter(fileStream);
      sw.Write("TODO: Generate the data you want to put in your file");
      sw.Flush();
      sw.Close();
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...