2

各レポートのパラメーターに動的コントロールを使用する ASP.NET Web フォーム アプリ (C#) にレポート モジュールがあります。

これらの動的コントロールは、SQL Server 2008 DB の XML 列から構築されます。

XML 構造:

<Report Parameters>
    <Parameter>
        <Name>CustomerId</Name>
        <Control />
    </Parameter>
     <Parameter>
        <Name>Start Date</Name>
        <Control>DDL</Control>
    </Parameter>
</Report Parameters>

読みやすくするために多くの要素を省略しました。

要素が空でない場合<Control>(XML の例の Start Date パラメーターの場合のように)、C# ベースの XSLT 変換により、 my form に適切なコントロールが作成されます。

要素が空の場合<Control>(CustomerId の場合など)、同じ名前の既存の c# プロパティを使用したい (つまり、C# コードで CustomerId が定義されている)。

これらのパラメーター値 (CustomerId と Start Date) は、レポート データの生成に使用されるストアド プロシージャに渡されます。

C# コードで XPathNavigator と関連するクラスを使用して、空の要素の<Name>要素を削除し<Control>ます。

問題は、<Name>要素が文字列の形式であり、それを C# コード形式にしたいことです (これを説明するより良い方法が思い浮かびません!) つまり、this.CustomerId が必要です (this を「CustomerId」ではなく、文字列ではなくコードであることを示します。

このシステムが時間の経過とともにいくつのレポートを作成するかわからないため、「CustomerId」、次に this.CustomerId などの場合、列挙型または switch ステートメントを構築したくありません。動的コードのポイントを無効にしているようです。

おそらく熟考が必要になると思いますが、これについての知識はほとんどないため、この問題に対する別のアプローチに関するアドバイスやアドバイスを歓迎します.

ありがとう、

リッチ。

4

3 に答える 3

0

これはそれを行う必要があります:

this.GetType().GetProperty("CustomerId").SetValue("YourValue");
于 2010-06-30T03:41:39.530 に答える
0

あなたが探しているのはコードジェネレーターです。自分で実装したことはありませんが、以前に他の人が作成したテンプレートを使用したことがあり、魅力的に機能します。ここから始められます。

于 2010-06-29T15:01:40.523 に答える
0

xml コンテンツに基づいてクラスとそのプロパティを動的に生成したいですか? そして、コードを生成して再コンパイルする必要なく、それを望んでいます。私も一度それを試しましたが、うまくいきませんでした。

解決策がわかりません。申し訳ありません。

于 2010-06-29T14:51:31.973 に答える