0

レポート内のデータに適用する必要がある条件付きルールを動的に定義しようとしています。私が望むのは、エンド ユーザーが構成で条件を指定できるようにすることです。構成は、レポートの実行時にコンパイルおよび実行されます。

コードで行うと、以下のコードのようなものになります。

      public int showTopEntries{get; set;}
. . . . 

showTopEntries = showTopEntries >= totalEntries ? totalEntries : showTopEntries;

ただし、ユーザーにこのルールをテキストファイルで提供してもらいたいので、コードで読み取って翻訳します。(以下の) フォームの文字列を上記のステートメントに解析するにはどうすればよいですか?

PropertyToSet= "showTopEntries" Condition ="showTopEntries >= totalEntries" ifTrue="totalEntries" ifFalse="showTopEntries"

最終的には、ユーザーにフォームでルールを定義してもらいたい

<IfCondition>
    <WhenTrue><\WhenTrue>
    <WhenFalse>
        <IfCondition>
            <WhenTrue>
                <IfCondition>
                    . . . . .
                <\IfCondition>
            <\WhenTrue>
        <\IfCondition>
    <\WhenFalse>
<\IfCondition>

基本的に、オブジェクトがある場合

public class PersonDetail { public String Name{get; set;} パブリック文字列の説明{get;} set;} public String Age{get;} set;} public Boolean Alive{get;} set;} public MaritalStatus MaritalStatus {get;} set;} パブリック アドレス アドレス{get;} 設定;} }

そして、次の式を使用して、名前の部分文字列などの条件付き置換を適用する必要がありました

  public static class  DetailExtender
     {
          public static void EvaluateConditionalFieldRule(this PersonDetail Detail, String PropertyToEvaluate, String ConditionalExpression, List<String> parameters, String IfTrue, String ifFalse)
          {
               var property =  Detail.GetType().GetProperties().Where(x=>x.Name == PropertyToEvaluate);
               if (property == null)
                    throw new InvalidDataException("Please specify a valid  Detail property name for the evaluation.");
               //put together the condition like so 

               if (Detail.AsQueryable().Where(ConditionalExpression, parameters).Count() > 0)
               {
                    // property.Value = IfTrue;
               }
               else
               {
                    property.Value = ifFalse;
               }

          }
}

ご提案いただきありがとうございます。

4

1 に答える 1