2017-09-25 8 views
0

많은 양의 데이터가있을 수있는 각도 2 용 검도 UI 그리드가 있습니다. 결과적으로 카운트를 포함하고 페이지 매김 그리드에 데이터를 넣는 API 호출을 사용하고 있습니다. Excel로 내보내기 버튼을 클릭하면 표시된 데이터 만 반환됩니다. 대신 전체 데이터 세트를 내보낼 수 있어야합니다.Telerik Kendo UI 그리드 Excel 내보내기 사용자 정의

나는 다음과 같이 내가 그리드에를 fetchData 방법을 사용하는 것으로 가정하고 있고 포함되어 있다고 생각 :

<kendo-grid-excel fileName="MyExport.xlsx" [fetchData]="allResults"></kendo-grid-excel> 

그러나, allResults 방법은 ExcelExportData 객체를 반환해야합니다. API에 대한 내 메소드 호출은 파싱 된 관찰 가능 객체를 반환합니다. 구독 이벤트에서 데이터를 반환하려고했지만 메서드에서 값을 반환해야한다는 TypeScript 오류가 발생합니다. 반환 형식을 "any"로 변경하면 외부에서 필터를 적용 할 때 "this"에 대한 호출이 실패합니다.

이 내 현재의 인출 방법 :

allResults(): ExcelExportData { 
    if (!this.sort.length) { 
     this.sort.push({ field: undefined, dir: undefined }); 
    } 

    this.myService.resultsGet(
     this.filters.date, 
     ... 
     undefined, // skip 
     undefined, // take 
     this.sort[0].field, 
     this.sort[0].dir 
    ).subscribe(
     (pagedList: any) => { 
      for (let item of pagedList.results) { 
       // manipulate a few things here 
      } 
      return { data: pagedList.results }; 
     }, 
     e => { console.log(`error: ${e}`); } 
    ); 
} 

외부 API 호출 각 구성 요소 필터를 사용하고 구독을 통해 데이터를 반환을하려면이 옵션을 설정할 수있는 방법이 있나요?

미리 감사드립니다. 계속 두 가지가 같이

답변

0

같습니다 :

  • 정의되지 않은 : 당신이 스스로를 바인드해야하므로 fetchData는 구성 요소 인스턴스의 컨텍스트에서 호출되지

    this.allResults = this.allResults.bind(this); 
    
  • 반환 값 : 서비스가 서버에서 가져 오는 것으로 가정 할 때 약속 또는 관찰 가능을 반환해야합니다.

    constructor(
        public myService: MyService 
        ) { 
        this.allResults = this.allResults.bind(this); 
        } 
    
        allResults() { 
        if (!this.sort.length) { 
         this.sort.push({ field: undefined, dir: undefined }); 
        } 
    
         this.myService.resultsGet(
         this.filters.date, 
         ... 
         0, // skip 
         undefined, // take 
         this.sort[0].field, 
         this.sort[0].dir 
        ).map(response => { 
         // manipulate a few things here 
         return <GridDataResult> { 
          data: response.value, 
          total: response.count 
         } 
        } 
    

    업데이트 : 구독 하지 않도록 데이터,(), 당신은 당신이 뭔가를 얻을 지도()

이 모두 함께 퍼팅하려면 여기입니다 Telerik의 예 중 하나를 기반으로 이것을 보여주는 플 런커.

excel export plunker

+0

이 정의에 대한 정보 주셔서 감사합니다! 반환은 여전히 ​​문제입니다. 내가 가지고있는 문제는 그리드가 내보내기에 필요한 데이터의 서브 세트 만 가지고 있다는 것입니다. 이미 맵 대신 구독을 사용하더라도 그리드를로드하는 데 사용하는 메서드에 대해 allResults에 작성한 코드가 이미 있습니다. 그리드가 Observables를 처리 할 수 ​​있기 때문에 정상적으로 작동합니다. "Excel로 내보내기"버튼을 클릭하면 ExcelExportData 유형 (allResults() : ExcelExportData)을 반환하는 myService.resultsGet 메서드에 대해 다른 매개 변수 집합이 필요합니다. 반환 값을 맵에 넣으면 void가 반환됩니다. 검도가 할 수 있을까요? – ChristyPiffat

+0

당신이 무엇을 요구하고 있는지 잘 모르겠습니다. 나는 모든 데이터를 얻고 수정하는 것을 보여주는 위의 플 런커를 추가했다. –