2012-01-25 2 views
3

Question_Id, value, enable 열로 데이터 조회가 가능합니다. 답변 목록에 질문 목록이로드됩니다.DataTable에 표현식을 작성하여 제안을 제안 하시겠습니까?

질문이있는 데이터 테이블에 기반한 UI 컨트롤이 true로 설정되어 있습니다. 사용자가 질문 중 하나에 대한 대답을 선택하거나 변경하면 질문 표에 값이 업데이트되어 다른 관련 질문이있을 경우이를 활성화/비활성화 할 수 있습니다.

기본적으로 'Y == (someValue) AND/OR .....'인 경우 X 활성화, 여기 X, Y는 질문입니다.

Linq.Expression에서 표현 트리를 사용하여 표현식 평가를 새로 처리하고 구현하기 좋은 디자인 승인을 찾고 싶습니다.

어떤 사람이 나를 인도 할 수 있습니까?

+0

일부 소식을 기다리는 중 !! – Dhana

+0

나에게 명확하지 않다 : 1) 최종 사용자가 답변에 응답하기위한 프로세스 또는 응답을 편집하는 프로세스를 설명하고 있습니까? 2) 두 질문이 '관련'이라는 것을 어떻게 압니까? 대답 테이블을 설명하십시오. (가능한 답변과 '맞는 대답'으로 추측됩니다.) – GameAlchemist

+0

1. 편집 답변은 드롭 다운에서 값을 선택한다는 것을 의미합니다. 여기서 드롭 다운에는 질문에 대한 모든 옵션이 포함되어 있습니다. – Dhana

답변

0

질문을 올바르게 이해하는 경우 해당 질문에 대한 답변을 기반으로 동적으로 업데이트해야하는 질문 목록을 작성하고 있습니다. 예를 들어, 질문 # 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에 간단한 논리 문을 저장하고 구문 분석하고 조건문 정의를 식 트리로 변환 할 수 있음)을 먼저 구문 분석해야합니다. 이것은 의사 결정 나무가 얼마나 복잡한 지에 따라 매우 간단하거나 복잡 할 수 있습니다.

관련 문제