我有一个Silverlight应用程序,我想要导出一些数据。文件输出格式很可能是PDF或Word。但是我们假设我可以适当地生成文件内容。我希望能够弹出一个“保存”对话框,供用户保存此数据或直接在程序中打开它。
现在显然我可以将用户启动到URL并在服务器上执行导出,并将响应的MIME类型更改为Word或PDF。这样可以正常工作。然而,问题的关键在于我已经在客户端上拥有正确的数据(包括复杂的过滤器等)并在服务器上重新创建这个数据集只是为了将它发送回客户端再次看起来很愚蠢,如果我可以避免的话。 / p>
有没有办法在Silverlight中获取现有数据集并生成Word或PDF文件并将其放到用户的计算机上?我也可以使用Silverlight中的浏览器互操作从JavaScript中完成。我不想要使用浏览器外的Silverlight。
答案 0 :(得分:2)
您需要使用SaveFileDialog
class。请注意,由于Silverlight的安全设置,需要打开SaveFileDialog
作为用户事件(例如,单击按钮)的结果。
在使用DefaultExt
方法显示对话框之前,可以使用Filter
或ShowDialog()
等属性配置对话框(如果需要)。
如果用户正确指定了文件并单击了“确定”,则ShowDialog()
方法将返回true
。如果是这种情况,您可以调用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();
}
}