9

RDLC フィールドの背後にある式の拡張メソッドを作成することはできますか?

たとえば、有効な値または null の可能性がある DateTime フィールドがデータソースにあるとします。TextBox を RDLC にドラッグ アンド ドロップし、ToShortDateString() メソッドを使用してその値をフォーマットします。これは、入力された DateTime 値に対しては正常に機能しますが、NULL フィールドで .ToShortDateString() を実行しようとすると、実行時に明らかに例外がスローされます。

?DateTime 値を処理するときに、.ConvertFromNullToEmptyString() のようなメソッドを呼び出すことができるように、RDLC 式で使用できる拡張メソッドを記述できるかどうか疑問に思っていました。

もちろん、この問題を回避する方法は他にもありますが、RDLC 式で使用する拡張メソッドが私のビジネス上の問題への可能なアプローチになるのではないかと考えていました。

ありがとう!

4

4 に答える 4

2

はい、可能です。コードをレポートに直接埋め込むか、カスタム アセンブリを含めることができます。

于 2010-09-19T08:19:35.173 に答える
2

オブジェクトのインスタンスで拡張メソッドを使用することはできますが、AS 拡張メソッドを使用することはできません。それらがメンバーである型の静的メソッド呼び出しとしてそれらを呼び出す必要があります。そのため、代わりに-- ディクショナリ インスタンスのプロパティでメソッドをmyDictionary.Values.Sum()呼び出す--インスタンスをその型の静的メソッドに渡すことができます(この例では、レポートはアセンブリを参照する必要があります)。そうです、拡張機能でもあるメソッドを使用できますが、(とにかく表示されます)特定のインスタンスの拡張機能としては使用できません。SumValuesSystem.Linq.Enumerable.Sum(myDictionary.Values)SumEnumerableSystem.Core

于 2012-02-29T17:45:02.680 に答える
0

質問の解決策については Corina に同意しますが、組み込みの式を使用して、彼女が提案するルートに行かなくても、より良い解決策に到達できると思います。SQL からの DateTime がある場合は常に、null になる可能性がありますが、/ /をIIFチェックするステートメント (式は基本的に VB であることに注意してください)を使用して、これを簡単にテストできます。それが何かである限り、目的の操作を実行し、そうでない場合は空白を返します。の結果の型はおそらく文字列になるので、注意してください。nullnothingemptyIIF

于 2010-09-21T22:20:49.823 に答える