2014-10-20 2 views
2

답변을 here으로 게시 한 후 새 질문을 만들어이 문제를 해결합니다.검도 그리드 - kendoDropDown으로 행 필터링

나는 그 칼럼에 가능한 값의 드롭 다운으로 나타나기 위해 검도 격자에 행 필터를 만들려고한다. 지금까지 가장 가까운 것은 Pluc의 예 in linked question입니다. 여전히 의도 한대로 작동하지 않습니다.

var herkunftDataSource = new kendo.data.DataSource({ 
    data: [ 
    { Value: "Choice One" }, 
    { Value: "Choice Two" } 
    ] 
}); 

그것은 '아무튼 : 드롭 다운리스트에 대한

function herkunftDropDownEditor(element) { 
    element.kendoDropDownList({ 
      autoBind: false, 
      optionLabel: "--Select Value--", 
      dataTextField: "Value", 
      dataValueField: "Value", 
      valuePrimitive: true, 
      dataSource: herkunftDataSource 
      }); 
    } 

그리고 데이터 소스 :이 herkunftDropDownEditor 기능이

{ 
    field: "Herkunft", 
    title: "Herkunft", 
    width: "120px", 
    type: "string", 
    filterable: 
    { 
     cell: 
     { 
      showOperators: false, 
      template: herkunftDropDownEditor 
     } 
    } 
} 

입니다 : kendoGrid의 열에서

는이 같은 필드를 정의 일하지 마라. 내가 크롬에서 얻는 JS 오류가 라인에 :

element.kendoDropDownList({ 

오류는 말한다 : 그것은 kendoDropDownList 기능을 사용할 수 없습니다 어떤 이유 "Uncaught TypeError: undefined is not a function"..

Telerik이 예제에서 템플릿을 사용하는 방법도 혼란 스럽습니다. template: "#=FirstName# #=LastName#" 그들이하는 방식은 template 대신 ui에 함수를 연결하는 것입니다. 나는 template: herkunftDropDownEditor 대신 ui: herkunftDropDownEditor을 호출하여이 접근법을 시도했다. 이렇게하면 오류는 없지만 작동하지 않습니다. 검색 필드는 여전히 텍스트 상자입니다. Chrome에서 디버깅 할 때 함수에있는 element 인수를 사용할 수 없다는 것을 알았습니다.

단서가 잘못되었습니다.

+0

내가 더 당신을 도울 수 있습니다. 이러한 종류의 오류는 대개 잘못된 범위/순서로 물건을 선언했음을 의미합니다. – Pluc

답변

8

링크 게시물에서 답변을 업데이트했습니다.

2014 Q2 SP1부터 템플릿 기능은 이제 "데이터 소스"와 "요소"가 포함 된 개체를받습니다.

변경

element.kendoDropDownList({ 

element.element.kendoDropDownList({ 
1

에 아마 범위가 문제입니다.

MVVM 앱입니까? Grid가 선언 코드를 통해 마크 업에서 초기화됩니까? 정지 검도 템플릿 위

<div 
data-role="grid" 
data-filterable='{mode: "row"} 
data-columns="[ 
       { 
       field: 'Herkunft', 
       filterable: { 
        cell: { 
          template: kendo.template($('#template').html())} 
          } 

       }] 
></div> 
<script type="text/x-kendo-template" id="template"> 
    #debugger;# 
</script> 

코드 컴파일 및 개발자 도구의 실제 범위를 볼 수 있습니다 그렇다면, 당신은 다음과 같이 디버거에 의해 컴파일 중지 할 수 있습니다.

어쩌면 herkunftDropDownEditor 함수를 윈도우 객체에 할당해야합니다.

window.myAppNameSpace.herkunftDropDownEditor = function(){...}; 

그리드에서

는 다음과 같이 호출 : 당신이 당신의 예를의 JSBin를 게시 할 경우

filterable: { 
      cell: { 
      template: myAppNameSpace.herkunftDropDownEditor 
       } 
      } 
+0

늦게 답장을 드려 죄송합니다.Pluc는 정확했습니다. 문제였습니다. 그러나'#debugger; # '제안에 대해 투표를하면됩니다. 나는 이것을 몰랐고 많은 도움이되었다. –