0

レポートからxmlを解析し、それをカスタムテーブルに表示する、アプリケーションに接続されたテストWCFクライアントがあります。テーブル上で最初に実行可能な一意のIDのリストのために折りたたむことができるようにしたいセルがあります。問題は、データが多すぎることです。最初にレポートからIDをロードし、IDがクリックされたときに動的に追加情報を呼び出す方法があるかどうか疑問に思いました。このようにして、アプリの起動時にロードするデータがはるかに少なくなります。

レポートのsoapリクエストでこれを実行できるかもしれないと思いましたが、APIをどのように理解するのか本当にわかりません。これは、WCFアプリケーションのために過去の誰かによって行われました。これに追加すると、テーブルの特定の部分しか取得できないと思いましたか?多分私はこれに近づく方法で完全に間違っています。

public string Invoke(string reportPath, FilterViewModel reportParameter, NetworkCredential networkCredential)
{
    if (NetworkInterface.GetIsNetworkAvailable())
    {
        m_NetworkCredential = networkCredential;
        m_reportParameter = reportParameter;

        Dictionary<string, string> headers = new Dictionary<string, tring>();
        headers.Add("charset", "utf-8");
        headers.Add("useUnsafeHeaderParsing", "true");
        headers.Add("SOAPAction", "http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices/LoadReport");

        StringBuilder reqSOAPEnv = new StringBuilder();

        reqSOAPEnv.Append("<s:Envelope xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'>");

        reqSOAPEnv.Append("<s:Body xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' ");
        reqSOAPEnv.Append("xmlns:xsd='http://www.w3.org/2001/XMLSchema'>");

        reqSOAPEnv.Append("<LoadReport xmlns='http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices'>");
        reqSOAPEnv.Append("<Report>");
        reqSOAPEnv.Append(reportPath);
        reqSOAPEnv.Append("</Report>");
        reqSOAPEnv.Append("</LoadReport>");

        reqSOAPEnv.Append("</s:Body>");
        reqSOAPEnv.Append("</s:Envelope>");

        SSRS_ServiceRequestController serviceRequest = new SSRS_ServiceRequestController();
        result = serviceRequest.MakeWebRequest(ServiceURL, m_ContentType, m_Method, headers, networkCredential, reqSOAPEnv.ToString());
    }
    return result;
}
4

1 に答える 1

1

SSRS Web サービスのドキュメントはもうご覧になりましたか? 私の知る限り、SOAP APIにはレポートの一部を取得するメソッドはありません。

1 つの回避策は、レポートを XML にレンダリングし、その XML を処理して必要なデータのみを取得することです。もう 1 つは、エクスポートするテーブルにサブレポートを使用し、状況に応じてサブレポート自体のみを使用することです。

ところで、あなたが投稿したコードを継承していることは理解していますが、少しずれているように見えます。SOAP リクエストが文字列として構成されるのはなぜですか? SSRS Web サービスのプロキシを生成し、通常のメソッド呼び出しを使用するだけで、フレームワークに SOAP 処理を任せれば、おそらくはるかに簡単になります。

于 2012-09-01T10:53:19.637 に答える