2012-05-11 23 views
0

我有一個Silverlight應用程序,它獲取聯繫人列表並將它們顯示在數據網格中。該應用程序還需要支持將聯繫人導出到Excel並將聯繫人打印爲HTML頁面。如何將服務調用的結果作爲文件返回?

我使用WCF RIA服務在Silverlight客戶端上構建大部分查詢,然後服務器向查詢添加一些額外的where子句。

我想弄清楚是否有一種方法來運行查詢結果使用ASP.Net頁面,它將格式化它們並提示用戶下載結果(或打印結果)。

我想出的唯一想法是將IQueryable對象保存爲服務器端的變量,並將密鑰返回給Silverlight頁面。然後將密鑰傳遞給Export.aspx或Print.aspx,它將獲取查詢結果並返回它們。

有什麼更好的點子?

看來我必須有更好的方式,我只是沒有想到。

回答

0

因此,經過大量的工作和研究,我終於可以做到這一點。爲了使它工作,我不得不在Silverlight端使用一些WCF RIA Services內部類(通過反編譯)來生成傳遞給ASP.Net頁面的正確查詢字符串。然後在服務器端,我不得不反編譯更多的類來解析查詢字符串並將其轉換爲有效的Linq查詢。現在,它都可以工作,我可以在後面的代碼中運行查詢,並將結果作爲文件輸出。

如果有人有興趣讓我知道,我可以嘗試分享血淋淋的細節。謝謝!

0

不幸的是,沒有更好的方法,至少我知道什麼。我們一直在爲Silverlight的Excel導出進行調查。我們嘗試使用url打開一個新的瀏覽器窗口,但不能添加任何標題或PUT數據,這是我們所需要的。因此,除非您可以在URL中完整編碼您的查詢,否則此方法將無法使用。

我們將實施的方法是將導出的結果保存在存儲器中,並返回此結果的關鍵字,正如您在問題中提到的那樣。

另一方面,它確實允許一些很好的功能,例如啓用發送鏈接到資源。這當然會引起所有頭疼的權限等。

-1

我已經在客戶端使用ExcelLite成功生成了Excel文件。然後這是一個通過保存文件對話框提示用戶的問題。您可以爲數據網格一般地執行此操作。輸出HTML並不困難。

相關問題