質問を正しく理解している場合は、それらの質問の回答に基づいて動的に更新する必要がある質問のリストを作成しています。たとえば、質問#1に答えた場合、質問#2は無効にする必要があります(またはもっと複雑なもの)。
私は、動的なコード生成(例えば、表現木)を大いに好んでいますが、これは実際には単一のDataTable
よりはるかに優れた関係を表現するのに役立つため、XML構造でより簡単に扱うことができます。
<question id="1">
<if valueToCompare="Foo" operator="EqualTo">
<disable questionId="5" />
<removeOption questionId="6" optionId="2" />
</if>
</question>
質問に対するユーザーの回答が変わるたびに、対応するXMLノードを調べてそれに応じて行動します。
非常に複雑なコントロールを使用しない限り、コンパイルされた式を必要とせずにコントロールをリアルタイムで評価および再構築することができます。
しかし、式について学びたい場合は、確かにXML構造からそれらを外挿して構築し、質問が変わるたびに呼び出される代理人を作成することができます。たとえば、質問#1に応答すると質問#2が無効になる必要がある場合は、このロジックを質問#1が変更されたときに起動されるデリゲートに切り替えることができます。
これは、最初にデータソース(XMLなど)を構文解析し、文字列または複数の列として単純な論理ステートメントをDataTable
に格納して解析し、条件文の定義を式ツリーに変換する必要があります。これは、意思決定ツリーがどれほど複雑であるかに応じて、非常に単純または複雑になる可能性があります。
いくつかの更新を待っています! – Dhana
それは私には分かりません:1)回答を編集するプロセス、またはエンドユーザーが回答に返信するプロセスについて説明していますか? 2)2つの質問が「関連」していることをどのように知っていますか?あなたの回答テーブルも記入してください(可能な答えと私が推測する「正しい」答えでいっぱいです) – GameAlchemist
1.編集の答えは、ドロップダウンから値を選択することを意味します。ここではドロップダウンには質問のオプションがすべて含まれています。 – Dhana