0

我有一个 Silverlight 应用程序,它获取联系人列表并将它们显示在数据网格中。该应用程序还需要支持将联系人导出到 Excel 并将联系人打印为 HTML 页面。

我使用 WCF RIA 服务在 Silverlight 客户端上构建大部分查询,然后服务器也向查询添加了一些额外的 where 子句。

我试图弄清楚是否有一种方法可以使用 ASP.Net 页面运行查询结果,该页面将格式化它们并提示用户下载结果(或打印结果)。

我想出的唯一想法是将 IQueryable 对象保存为服务器端的变量并将密钥返回给 Silverlight 页面。然后将密钥传递给 Export.aspx 或 Print.aspx,它们将获取查询结果并返回它们。

有更好的想法吗?

似乎必须有一个更好的方法,我只是没有想到。

4

3 回答 3

0

所以经过大量的工作和研究,我终于能够做到这一点。为了使它工作,我不得不在 Silverlight 端使用一些 WCF RIA 服务内部类(通过反编译)来生成正确的查询字符串以传递给 ASP.Net 页面。然后在服务器端,我不得不反编译更多的类来解析查询字符串并将其转换为有效的 Linq 查询。现在一切正常,我可以在后面的代码中运行查询并将结果输出为文件。

如果有人感兴趣,请告诉我,我可以尝试分享血淋淋的细节。谢谢!

于 2012-08-28T18:06:18.870 回答
0

不幸的是,至少我所知道的没有更好的方法。我们也一直在为我们在 Silverlight 中的 Excel 导出进行研究。我们尝试使用 url 打开一个新的浏览器窗口,但您无法添加任何标题或 PUT 数据,这是我们需要的。因此,除非您可以在 URL 中完全编码您的查询,否则这种方法将不起作用。

正如您在问题中提到的,我们将实施的方法是将导出的结果保存在存储中并返回该结果的密钥。

另一方面,它确实允许一些不错的功能,例如启用发送资源链接。这当然会引起所有令人头疼的权限等问题。

于 2012-05-13T08:14:28.720 回答
-1

I've successfully generated Excel files using ExcelLite on the client side. Then it is a matter of prompting the user with a Save File dialog. You can do this generically for datagrids. Outputting HTML is not much harder.

于 2012-05-13T23:24:30.520 回答