2013-05-11 4 views
2

나는 자동 완성 기능과 함께 사용하는 사용자 지정 편집기가 있습니다. 웹 서비스가 호출되어 데이터를 반환합니다. 그러나 에디터에서 문제가되는 것은 없습니다. 나는 schema.parse()에 중단 점을 넣었지만 절대 적중하지 않았습니다. 내가 뭘 놓치고 있니?검도 자동 완성 표시되지 않음

function myAutoCompleteEditor(container, options) { 
    $('<input data-text-field="Name" data-value-field="Name" data-bind="value:' + options.field + '"/>') 
     .appendTo(container) 
     .kendoAutoComplete({ 
      autoBind: false, 
      suggest: true, 
      delay: 500, 
      dataSource: new kendo.data.DataSource({ 
       serverFiltering: true, 
       transport: { 
        read: function (opt) { 
         $.getJSON("/myWebService/GetData"); 
        }, 
       }, 
       schema: { 
        errors: function (e) { 
         return e; 
        }, 
        parse: function (data) { 
         return data.Name; 
        } 
       } 
      }) 
     }); 
} 

UPDATE :

[{ "주소": ". 123 첫번째 성", "ID

데이터, JSON.stringfy (데이터)을 통해 도시 이렇 ":"1 ","이름 ":"David "}, {"주소 ":"234 2nd St ","ID ":"2 ","Name ":"Smith "}]

UPDATE 2 :

코드는 이제 다음과 같습니다

function myAutoCompleteEditor(container, options) { 
    $('<input data-text-field="Name" data-value-field="Name" data-bind="value:' + options.field + '"/>') 
     .appendTo(container) 
     .kendoAutoComplete({ 
      dataValueField: "Name", 
      autoBind: false, 
      suggest: true, 
      delay: 500, 
      dataSource: new kendo.data.DataSource({ 
       serverFiltering: true, 
       transport: { 
        read: { 
         url: function (opt) { 
          return "/myWebServices/GetData/" + opt.filter.filters[0].value; 
         }, 
         dataType: "json" 
        }       
       }, 
       schema: { 
        errors: function (e) { 
         return e; 
        } 
       }, 
       data: function (response) { 
        return $.parseJSON(response); 
       } 
      }) 
     }); 
} 

UPDATE 3 :

마지막 스키마 및 데이터 섹션을 제거하여 작업을 얻었다. OnaBai의 답을 수락하기 때문에 그는 올바른 방향으로 나를 가리켰다. 최종 코드는 다음과 같습니다.

function myAutoCompleteEditor(container, options) { 
    $('<input data-text-field="Name" data-value-field="Name" data-bind="value:' + options.field + '"/>') 
     .appendTo(container) 
     .kendoAutoComplete({ 
      dataValueField: "Name", 
      autoBind: false, 
      suggest: true, 
      delay: 500, 
      dataSource: new kendo.data.DataSource({ 
       serverFiltering: true, 
       transport: { 
        read: { 
         url: function (opt) { 
          return "/myWebServices/GetData/" + opt.filter.filters[0].value; 
         }, 
         dataType: "json" 
        }       
       } 
      }) 
     }); 
} 

답변

3

문제는 read 기능의 구현입니다. 이 함수는 반환 할 데이터가있는 opt.success을 호출해야합니다. URL에서 데이터를 가져 오는 중이지만 그런 데이터는 반환하지 않습니다.

그러나 귀하의 경우에는 특별한 것을하지 않는 것 같습니다 (기능을 정의 할 필요가 없습니다). 그래서 당신이 Object로 정의 할 수 있습니다 그냥 정의 transport.read.url

당신은 사용할 수 있습니다

dataSource: new kendo.data.DataSource({ 
    serverFiltering: true, 
    transport: { 
     read: { 
      url : "/myWebService/GetData" 
     } 
    }, 
    schema: { 
     parse: function (data) { 
      return data.Name; 
     } 
    } 
}) 

편집을 : 서버를 반환하고 구문 분석하지 않는 데이터를 사용하기 위해, 당신은 사용할 수 있습니다 :

function myAutoCompleteEditor(container, options) { 
    $('<input data-text-field="Name" data-value-field="Name" data-bind="value:' + options.field + '"/>').appendTo(container).kendoAutoComplete({ 
     autoBind  : false, 
     suggest  : true, 
     delay   : 500, 
     dataValueField: "Name", 
     dataSource : new kendo.data.DataSource({ 
      transport: { 
       read: { 
        url : "/myWebService/GetData" 
       } 
      } 
     }) 
    }); 
} 

트릭 반환 배열의 값이 autocomplete의 값을 정의 dataValueField을 정의한다.

+0

OnaBai, 답장을 보내 주셔서 감사합니다. 나는 당신의 코드를 따라 parse()에서 중단 점을 얻을 수있었습니다. 그러나 데이터에는 데이터가 있지만 ([[object, object] [object, object] ....]) 데이터는 "undefined"로 표시됩니다. 그것을 어떻게 참조 할 수 있습니까? 또한 URL을 하드 코드했지만 현실적으로 "/ myWebService/GetData /"+ (사용자 입력 내용에 관계없이)처럼 URL을 사용해야합니다. 어떻게해야합니까? – notlkk

+0

반환 된 데이터의 형식을 표시 할 수 있습니까? parse 함수 나'alert (JSON.stringify (data));에'console.log (data)'를 삽입하고 원본 포스트를 갱신 해보십시오. 나는 그것을 들여다 볼 것이다. OnaBai, – OnaBai

+0

감사합니다. 데이터와 관련된 원래 게시물을 업데이트했습니다. – notlkk

관련 문제