19

バックグラウンド:

私はAccessデータベースアプリケーションをASP.NetC#MVCに変換する任務を負っています。これは私の最初のMVCアプリケーションです。

変換が必要なレポートは10個あります。RDLCファイルとreportviewerを使用しています。最新のすべてのパッチでVisualStudio2010を使用しています。既存のAccessデータベースによって作成されたSQLServerデータベースに接続しているため、テーブル構造はほぼ固定されています。そうでない場合は、10年間のデータを変換する必要があります。

2つを除くすべてのレポートを完了しました。最終レポートはより多くの処理を必要とし、データベースからのデータを表示するだけではありません。これを行う最も簡単な方法は、C#オブジェクトを作成し、すべての処理をサーバー側で実行してから、RDLCを使用して結果を表示することです。

問題

私が抱えている問題は、VisualStudioが作成したオブジェクトを潜在的なデータソースとして認識しないことです。「データセットの追加」を試みるたびに、「データソース構成ウィザード」が表示され、可能なデータ接続としてSQLServerデータベースのみが提供されます。データセットとしてオブジェクトを選択できる画面が存在することは知っていますが、その画面が表示されることはありません。

オブジェクトは次のとおりです(わかりやすくするために処理関数は削除されています)。

public class TurnAroundVal
{
    // Registration Package information
    public string dataType { get; set; }

    // Calculated totals; values only set through constructor or calculation function
    public int packageCount { get; private set; }
    public int dayCount { get; set; }
    public double avgTurnAround { get; private set; }
    public int upperRange { get; private set; }
    public int lowerRange { get; private set; }
}

public class TurnAroundVals
{
    // Public Variables
    public IEnumerable<TurnAroundVal> TurnArounds { get; private set; }
    public DatePass dates { get; set; }
    public int pkgTotal { get; private set; }
    public double dayTotal { get; private set; }
    public double avgAllTurnArounds { get; private set; }
}

また、「TurnAroundVal」のIEnumerableをデータソースとして使用し、日付、int、およびdoubleをパラメーターとして渡すこともできます。どちらでも動作します。

質問

Visual Studio 2010に、作成したオブジェクトをRDLCデザイナーが表示できるようにするための設定がありませんか?これが私が定義したクラスで機能すると思っても間違っていますか?

答え

与えられたすべての提案は役に立ちましたが、最終的に私にとってそれが機能するようになったのは、同じソリューションで一時的な非Webプロジェクトを作成し、そこでRDLCを作成することでした。データセットを追加しようとすると、オプションとして「オブジェクト」が表示されます。オブジェクトが表示されるようにWebプロジェクトへの参照を追加する必要がありますが、必要なものを選択してRDLCで使用できます。その後、RDLCファイルをWebプロジェクトにドラッグアンドドロップし、一時プロジェクトを削除するだけで、準備は完了です。データソースはコードで手動で追加する必要があり、RDLCで指定したものと同じ名前を付ける必要があることを覚えておいてください。

4

5 に答える 5

3
  1. クラスがアプリケーションと同じ名前空間にあることを確認してください。
  2. レポートを作成する前に、アプリケーションを作成してみてください
  3. レポートウィザードを開始します。DataSouceで、Webアプリケーションの名前を選択します。
  4. [使用可能なデータセット]の下に、VisualStudioが「メソッドの選択」として解釈するものが表示されます。すべてが順調であれば、これはターンアラウンドであるはずです。

クラスファイルをApp_DataまたはApp_Codeフォルダーに配置する必要があるかもしれませんが、よくわかりません。

これも役立つかもしれません。

http://msdn.microsoft.com/en-us/library/ms251692%28v=vs.100%29.aspx

于 2012-06-14T18:22:58.927 に答える
2

オブジェクトを同じ名前空間の下に設定しますが、UIプロジェクトで参照する別のプロジェクトに設定します。

また、を実装してみてくださいINotifyPropertyChanged

于 2012-11-20T12:14:48.273 に答える
2

パブリックメンバーのみを使用する場合、VisualStudioはクラスを認識しません。代わりにgetterとsetterを使用すると、データソースを選択したときにクラスを確認できます。

Visual Studioには、パブリックメンバーと連携しない他のウィザードがいくつかあります。

乾杯、マーカス

于 2014-03-11T10:04:10.177 に答える
0

Visual Studio2017のASP.NETMVCプロジェクトでRDLCレポートを作成しようとしたときに、これと同じ問題が発生したので、これを別の回答として追加して、これが2018年1月の問題であることを明確にします。

私のソリューションは、C#ライブラリプロジェクトとMVCクライアントプロジェクトで構成されていました。

C#ライブラリプロジェクトにレポートを追加すると(新しいアイテムの追加を選択してから、レポートウィザードアイテムを選択)、データソース構成ウィザード(データベース、サービス、またはオブジェクトのいずれを使用するかを選択できます)を備えたレポートウィザードが表示されます。データソース)その上にモーダル:

データソース構成ウィザードを表示するレポートウィザード

一方、 MVCプロジェクトに新しいレポートウィザードアイテムを追加することを選択すると、データソース構成ウィザードなしでレポートウィザードが表示されます。

データソース構成ウィザードなしのレポートウィザード

MVCプロジェクトにビジネスオブジェクトクラスを追加し、それを再コンパイルしてから、レポートをMVCプロジェクトに再度追加しようとしましたが、2番目のスクリーンショットがまだ表示されているため、に追加するときにデータソース構成ウィザードが表示されないようです。何らかの理由でMVCプロジェクト。

于 2018-02-01T09:34:57.323 に答える
0

レポートウィザードを使用せずに、VS2017でデータソースとしてオブジェクトを追加できました。[c#を使用したWinformsアプリ] [PS私はNOOBなので、間違いなどが発生する可能性がありますが、これが方向性を示すのに役立つことを願っています。]使用した手順:

パートA1.データを表すオブジェクトを作成します。例:オブジェクト/モデルクラス私の場合は予定オブジェクトです

 class FutureVisitsModel
    {
        public DateTime StartDate {get; set;}
        public string Client_Id { get; set; }
        public string Treatment_Desc { get; set; }
        public string Service_Code { get; set; }

        public FutureVisitsModel()
        {
            DateTime startdate = StartDate;
            String clinetid = Client_Id;
            String treatmentdesc = Treatment_Desc;
            String serviceCode = Service_Code;
        }
    }

パートB:レポートの作成2.ソリューションへのレポートの追加:ソリューションを右クリックし、[新しいアイテムの追加]を選択してレポートを選択します ここに画像の説明を入力します 3.空白のレポートを開きます4.ツールボックスからテーブルをレポートにドラッグアンドドロップします5.ダイアログ開いてデータソースを選択します6.ソリューションからオブジェクトを選択します[ypuはパートAで作成したクラスを探します

パートC:レポートビューアフォームを作成する7.ソリューションエクスプローラーで新しいフォーム「formRptViewer」を作成する8.フォームを開いてレポートビューアコントロールを追加する9.ツールボックスにコントロールがない場合は、レポートをインストールする必要がありますナゲットからのビューアパッケージ、またはパッケージマネージャコンソールを介してインストールします。webformsバージョン:Install-Package Microsoft.ReportingServices.ReportViewerControl.WebForms winformsバージョン:Install-Package Microsoft.ReportingServices.ReportViewerControl.WinForms

9.1ソリューションエクスプローラーでレポートビューアーのコントロールをパブリックに設定するformRptViewerの横にあるドロップダウンをクリックして、フォームを構成するファイルを表示します。このファイルを編集します。formRptViewer.Designer.csは、reprtviewerのコントロールをパブリックパブリックMicrosoft.Reportingに変更します。 .WinForms.ReportViewer ReportViewer1;

パートD:データテーブルを作成してレポートに送信します10.データテーブルを作成しますDataTable dataTableFutureVisits = new DataTable(); [データテーブルに独自のデータを入力する必要があります]11。Microsoft.Reporting.WinFormsを使用してusingステートメントを追加します。12.データソースを設定し、レポートビューアの新しいインスタンスを作成します

ReportDataSource rs = new ReportDataSource();
            rs.Name = "DataSet1";
            rs.Value = dataTableFutureVisits;
            FormRptViewer frm = new FormRptViewer();
            frm.ReportViewer1.LocalReport.DataSources.Clear();
            frm.ReportViewer1.LocalReport.DataSources.Add(rs);
            frm.ReportViewer1.LocalReport.ReportEmbeddedResource = "ChiroRecallList.RptFutureVisits.rdlc";
            // name the report with date
            frm.ReportViewer1.LocalReport.DisplayName = "Your File Name Goes Here" + "_" + DateTime.Now.ToString("yyyyMMdd HH:mm");
            frm.ShowDialog();

パートE:レポートの更新:データテーブルに列を追加してレポートに表示する[列を削除するためのフォークも]

  1. データテーブルに列を追加します
  2. データを反映するようにオブジェクトクラスを変更します[パートAのように]
  3. レポートを開き、[データソースではなく]データセットを削除します
  4. ソリューションエクスプローラーの場合:プロパティドロップダウン展開があります
  5. datasourcesフォルダーを展開します
  6. モデルのスクリーンショットにちなんで名付けられたデータソースを削除します

  7. ソリューションのスクリーンショットをクリーンアップして再構築します

  8. レポートを開き、データソースを右クリックして、新しいデータセット のスクリーンショットを追加します
于 2019-03-08T01:53:00.537 に答える