질문을 올바르게 이해하는 경우 해당 질문에 대한 답변을 기반으로 동적으로 업데이트해야하는 질문 목록을 작성하고 있습니다. 예를 들어, 질문 # 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) 두 질문이 '관련'이라는 것을 어떻게 압니까? 대답 테이블을 설명하십시오. (가능한 답변과 '맞는 대답'으로 추측됩니다.) – GameAlchemist
1. 편집 답변은 드롭 다운에서 값을 선택한다는 것을 의미합니다. 여기서 드롭 다운에는 질문에 대한 모든 옵션이 포함되어 있습니다. – Dhana