Kenodo UI 网格与 Web API 数据源?

Kenodo UI Grid with Web API data source?

我正在 ASP.NET 核心上创建一个 Angular 应用程序 运行,我想创建一个使用 Web API 数据源的网格组件。我在官方文档中找不到有关如何执行此操作的任何线索。这甚至可能吗?

谢谢。

当然有可能,一个例子:有一个共享服务从我的 API 获取信息来填充 GridDataResult

服务:

/** Includes go up here **/

@Injectable()
export class RestService {

    apiRoot = 'http://myapi/api';
    headers: Headers = new Headers();
    options: RequestOptions = new RequestOptions();

    constructor(private http: Http) {
        this.headers.append('Content-Type', 'application/json');
        this.headers.append('charset', 'utf-8');
        this.options.headers = this.headers;
    }

    getDataFromApi(): Observable<any> {
        const callURL = `${this.uiRoot}/pathToData/`;
        const requestBody: Object = {};

        return return this.http.post(callURL, requestBody, this.options)
        .map(res => {
            return res.json().map(value => {
                return value.Result.map(item => {
                    return item;
                });
            });
        });
    }

}

然后在您的网格组件中,您应该订阅此方法并将其转换为您的 GridDataResult。类似于:

/** Includes go up here **/

@Component({
    selector: 'app-my-list',
    templateUrl: './account-my-list.component.html'
})
export class MyListComponent implements OnInit, OnDestroy {
    mySubscription: Subscription;

    state: State = {
        skip: 0,
        take: 50
    }

    myData: Array<any>;
    gridData: GridDataResult;

    constructor(private restService: RestService) { }

    ngOnInit() {
        this.mySubscription = this.restService.getDataFromApi().subscribe(val => {
            this.myData = val;
            this.gridData = process(this.myData, this.state);
        });
    }

    ngOnDestroy() {
        this.mySubscription.unsubscribe();
    }

    /** this is to change the state **/
    protected dataStateChange(state: DataStateChangeEvent): void {
        this.state = state;
        this.gridData = process(this.myData, this.state);
    }
}

模板将类似于:

<kendo-grid 
    [data]="gridData"
    [pageSize]="state.take"
    [skip]="state.skip"
    (dataStateChange)="dataStateChange($event)">
</kendo-grid>

请注意,这只是应该如何完成的示例,您必须考虑所有特定需求并相应地执行更改,还必须进行必要的包含(对于 Http 处理、可观察对象、OnInit、Ondestroy、等),我只是作为评论 /** Includes go up here **/