2017-02-14 9 views
0

우리 웹 응용 프로그램에 이미 구현 된 검도 트리보기가 있습니다. 새로운 요구 사항에서는 트리 뷰 내에 몇 가지 추가 컨트롤을 추가해야합니다.검도 UI 트리보기 트리보기에 텍스트 상자 및 콤보 상자 추가

  • 시나리오 1 : 사용자가 트리 뷰에서 체크 박스를 선택하면 하나의 텍스트 상자가 (일부 비즈니스 로직을 기반으로) 선택 체크 박스 근처에 표시해야한다. 컨트롤에 필요한 데이터는 JS 객체에 있습니다.

  • 시나리오 2 : 사용자가 트리보기에서 확인란을 선택하면 일부 비즈니스 논리에 따라 선택란 근처에 하나의 콤보 상자가 표시되어야합니다. 컨트롤에 필요한 데이터는 JS 객체에 있습니다. 이 컨트롤은 트리 뷰의 모든 수준에서 작성해야 내가 검도-UI의 붙박이 기능을 찾고

을 (코드에 이미있는 특정 비즈니스 로직을 기반으로) 나는 텍스트 상자 또는 콤보를 추가 할 수있는 -box는 트리 뷰 컨트롤 안에 있습니다. 검도 사이트에서는 많은 스레드를 사용할 수 있지만 비슷한 구현은 없습니다.

정확한 요구 사항을 이해하려면 아래 스크린 샷을 참조하십시오.

enter image description here.

답변

3

내장 된 기능이없는 것 같습니다. 그것은 사용자 정의 동작이므로 직접 작성해야합니다. 당신은 템플릿을 사용하여 그것을 달성 할 수 있습니다. 당신이 어떤 코드를 추가하지 않았기 때문에, 나는 데모 나 자신했다 :

위젯 구성 :

$("#treeview").kendoTreeView({ 
    dataSource: { 
     data: [{ 
     text: "Item 1", 
     value: 1, 
     showCombo: false, 
     checked: false, 
     items: [{ 
      text: "Item 1.1", 
      value: 2, 
      showCombo: true, 
      checked: false 
     },{ 
      text: "Item 1.2", 
      value: 3, 
      showCombo: true, 
      checked: true 
     }] 
     }] 
    }, 
    checkboxes: true, 
    template: kendo.template($("#item-template").html()) 
    }); 

    $("#treeview") 
    .on("change", "input.k-checkbox", function() { 
     var $select = $(this).closest("div").find("select"); 

     if ($select.length > 0) { 
     $select[($(this).is(":checked") ? "show" : "hide")](); 
     } 
    }); 

템플릿 :

<script id="item-template" type="text/x-kendo-template"> 
# if (data.item.showCombo) { # 
    #= data.item.text # 
    <select # if (!data.item.checked) { # #="style='display:none'"# # } #> 
    <option></option> 
    <option>Mechanical Engineering</option> 
    <option>Chemical Engineering</option> 
    <option>Electrical Engineering</option> 
    </select> 
# } else { # 
    #= data.item.text # 
# } # 
</script> 

나는 그것이 도움이되기를 바랍니다.

Demo

+0

대단히 감사합니다. @DontVoteMeDown .... :) –

+0

@NileshRathod는 가장 적합한 답변을 확인하는 것을 잊지 마십시오. – DontVoteMeDown

+0

예! 일단 내가 가장 좋은 것을 찾으면, 나는 확실히 이것을 할 것입니다. –

0

당신은 검도 옵션의 템플릿 구성을 사용할 수는 DontVoteMeDown 제안처럼 객체. 여기에 귀하의 요구 사항에 맞는 더 나은 솔루션입니다 :

{ 
    text: "Item 1.1", 
    value: 2, 
    checked: false, 
    extraOptions: ["", "Electrical Engineer", "Software Engineer"] // <-- Like this 
} 

그런 다음 템플릿에서이 같이 사용할 수 :

<script id="item-template" type="text/x-kendo-template"> 
    # if (data.item.extraOptions) { # 
     #= data.item.text # 
     <select> 
     # for (let index in data.item.extraOptions) { # 
      # if (index == +index) { # 
       <option>#= data.item.extraOptions[index] #</option> 
      # } # 
     # } # 
     </select> 
    # } else { # 
     #= data.item.text # 
    # } # 
</script> 

당신은 볼 수 이 그것을 필요로하는 트리 노드에 다른 데이터 항목을 추가 demo on Plunker.

+0

좋은 제안이지만 내 게시물에서 추가하는 경우가 많으므로 내 답변을 게시해야합니다. 복사하지 마세요. – DontVoteMeDown

+0

죄송하지만 템플릿을 사용하는 것이 가장 간단한 방법입니다. 그 외에도 우리의 대답은 완전히 다릅니다. 트리에서 선택된 모든 항목에 대해 미리 정의 된 항목 목록이있는 반면 목록이 필요한 항목에 대해서만 목록이 있습니다. 또한 항목이 선택되었는지 여부에 관계없이 목록이 표시됩니다.필자가 작성한 기본 코드를 사용했지만 Teleriks 데모 중 하나를 사용하면 똑같은 결과를 얻었을 것입니다. 나도 너에게 템플릿 제출을했기 때문에 신용을 줬어. 문제가 뭔지 알 수 없어. – Shai