2012-05-11 1 views
0

연락처 목록을 가져와 DataGrid에 표시하는 Silverlight 응용 프로그램이 있습니다. 또한 응용 프로그램은 연락처를 Excel로 내보내고 연락처를 HTML 페이지로 인쇄하는 기능을 지원해야합니다.서비스 호출 결과를 파일로 어떻게 반환합니까?

저는 Silverlight 클라이언트에서 대부분의 쿼리를 구성하기 위해 WCF RIA 서비스를 사용하고 있으며 서버는 쿼리에 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 출력은 그리 어렵지 않습니다.