All Components

Hidden

The Grid allows the user to show or hide its columns.

You can configure the hidden state of the columns by:

Using Built-In Options

To hide a particular Grid column, set the hidden option.

import { Component } from '@angular/core';
import { sampleCustomers } from './customers';

@Component({
    selector: 'my-app',
    template: `
        <div class="example-config">
          <button (click)="restoreColumns()" class="k-button">Restore hidden columns</button>
        </div>

        <kendo-grid [data]="gridData" style="height:400px">
          <ng-template ngFor [ngForOf]="columns" let-column>
            <kendo-grid-column
              field="{{column}}"
              [hidden]="hiddenColumns.indexOf(column) > -1"
            >
              <ng-template kendoGridHeaderTemplate let-dataItem>
                  {{dataItem.field}}
                  <button
                    (click)="hideColumn(dataItem.field)"
                    class="k-button k-primary"
                    style="float: right;"
                  >
                    Hide
                  </button>
              </ng-template>
            </kendo-grid-column>
          </ng-template>
        </kendo-grid>
    `
})
export class AppComponent {
    public gridData: any[] = sampleCustomers;

    public columns: string[] = [
      'CompanyName', 'ContactName', 'ContactTitle'
    ];

    public hiddenColumns: string[] = [];

    public restoreColumns(): void {
        this.hiddenColumns = [];
    }

    public hideColumn(field: string): void {
        this.hiddenColumns.push(field);
    }
}
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { FormsModule } from '@angular/forms';
import { GridModule } from '@progress/kendo-angular-grid';

import { AppComponent } from './app.component';

@NgModule({
  imports: [ BrowserModule, BrowserAnimationsModule, FormsModule, GridModule ],
  declarations: [ AppComponent ],
  bootstrap: [ AppComponent ]
})

export class AppModule { }
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './ng.module';

enableProdMode();

const platform = platformBrowserDynamic();
platform.bootstrapModule(AppModule);
export const sampleCustomers = [{
    'Id': 'ALFKI',
    'CompanyName': 'Alfreds Futterkiste',
    'ContactName': 'Maria Anders',
    'ContactTitle': 'Sales Representative',
    'City': 'Berlin'
}, {
    'Id': 'ANATR',
    'CompanyName': 'Ana Trujillo Emparedados y helados',
    'ContactName': 'Ana Trujillo',
    'ContactTitle': 'Owner',
    'City': 'México D.F.'
}, {
    'Id': 'ANTON',
    'CompanyName': 'Antonio Moreno Taquería',
    'ContactName': 'Antonio Moreno',
    'ContactTitle': 'Owner',
    'City': 'México D.F.'
}, {
    'Id': 'AROUT',
    'CompanyName': 'Around the Horn',
    'ContactName': 'Thomas Hardy',
    'ContactTitle': 'Sales Representative',
    'City': 'London'
}, {
    'Id': 'BERGS',
    'CompanyName': 'Berglunds snabbköp',
    'ContactName': 'Christina Berglund',
    'ContactTitle': 'Order Administrator',
    'City': 'Luleå'
}, {
    'Id': 'BLAUS',
    'CompanyName': 'Blauer See Delikatessen',
    'ContactName': 'Hanna Moos',
    'ContactTitle': 'Sales Representative',
    'City': 'Mannheim'
}, {
    'Id': 'BLONP',
    'CompanyName': 'Blondesddsl père et fils',
    'ContactName': 'Frédérique Citeaux',
    'ContactTitle': 'Marketing Manager',
    'City': 'Strasbourg'
}, {
    'Id': 'BOLID',
    'CompanyName': 'Bólido Comidas preparadas',
    'ContactName': 'Martín Sommer',
    'ContactTitle': 'Owner',
    'City': 'Madrid'
}, {
    'Id': 'BONAP',
    'CompanyName': 'Bon app',
    'ContactName': 'Laurence Lebihan',
    'ContactTitle': 'Owner',
    'City': 'Marseille'
}, {
    'Id': 'BOTTM',
    'CompanyName': 'Bottom-Dollar Markets',
    'ContactName': 'Elizabeth Lincoln',
    'ContactTitle': 'Accounting Manager',
    'City': 'Tsawassen'
}];

export const customers = [{
    'Id': 'ALFKI',
    'CompanyName': 'Alfreds Futterkiste',
    'ContactName': 'Maria Anders',
    'ContactTitle': 'Sales Representative',
    'Address': 'Obere Str. 57',
    'City': 'Berlin',
    'PostalCode': '12209',
    'Country': 'Germany',
    'Phone': '030-0074321',
    'Fax': '030-0076545'
}, {
    'Id': 'ANATR',
    'CompanyName': 'Ana Trujillo Emparedados y helados',
    'ContactName': 'Ana Trujillo',
    'ContactTitle': 'Owner',
    'Address': 'Avda. de la Constitución 2222',
    'City': 'México D.F.',
    'PostalCode': '05021',
    'Country': 'Mexico',
    'Phone': '(5) 555-4729',
    'Fax': '(5) 555-3745'
}, {
    'Id': 'ANTON',
    'CompanyName': 'Antonio Moreno Taquería',
    'ContactName': 'Antonio Moreno',
    'ContactTitle': 'Owner',
    'Address': 'Mataderos  2312',
    'City': 'México D.F.',
    'PostalCode': '05023',
    'Country': 'Mexico',
    'Phone': '(5) 555-3932'
}, {
    'Id': 'AROUT',
    'CompanyName': 'Around the Horn',
    'ContactName': 'Thomas Hardy',
    'ContactTitle': 'Sales Representative',
    'Address': '120 Hanover Sq.',
    'City': 'London',
    'PostalCode': 'WA1 1DP',
    'Country': 'UK',
    'Phone': '(171) 555-7788',
    'Fax': '(171) 555-6750'
}, {
    'Id': 'BERGS',
    'CompanyName': 'Berglunds snabbköp',
    'ContactName': 'Christina Berglund',
    'ContactTitle': 'Order Administrator',
    'Address': 'Berguvsvägen  8',
    'City': 'Luleå',
    'PostalCode': 'S-958 22',
    'Country': 'Sweden',
    'Phone': '0921-12 34 65',
    'Fax': '0921-12 34 67'
}, {
    'Id': 'BLAUS',
    'CompanyName': 'Blauer See Delikatessen',
    'ContactName': 'Hanna Moos',
    'ContactTitle': 'Sales Representative',
    'Address': 'Forsterstr. 57',
    'City': 'Mannheim',
    'PostalCode': '68306',
    'Country': 'Germany',
    'Phone': '0621-08460',
    'Fax': '0621-08924'
}, {
    'Id': 'BLONP',
    'CompanyName': 'Blondesddsl père et fils',
    'ContactName': 'Frédérique Citeaux',
    'ContactTitle': 'Marketing Manager',
    'Address': '24, place Kléber',
    'City': 'Strasbourg',
    'PostalCode': '67000',
    'Country': 'France',
    'Phone': '88.60.15.31',
    'Fax': '88.60.15.32'
}, {
    'Id': 'BOLID',
    'CompanyName': 'Bólido Comidas preparadas',
    'ContactName': 'Martín Sommer',
    'ContactTitle': 'Owner',
    'Address': 'C/ Araquil, 67',
    'City': 'Madrid',
    'PostalCode': '28023',
    'Country': 'Spain',
    'Phone': '(91) 555 22 82',
    'Fax': '(91) 555 91 99'
}, {
    'Id': 'BONAP',
    'CompanyName': 'Bon app',
    'ContactName': 'Laurence Lebihan',
    'ContactTitle': 'Owner',
    'Address': '12, rue des Bouchers',
    'City': 'Marseille',
    'PostalCode': '13008',
    'Country': 'France',
    'Phone': '91.24.45.40',
    'Fax': '91.24.45.41'
}, {
    'Id': 'BOTTM',
    'CompanyName': 'Bottom-Dollar Markets',
    'ContactName': 'Elizabeth Lincoln',
    'ContactTitle': 'Accounting Manager',
    'Address': '23 Tsawassen Blvd.',
    'City': 'Tsawassen',
    'Region': 'BC',
    'PostalCode': 'T2F 8M4',
    'Country': 'Canada',
    'Phone': '(604) 555-4729',
    'Fax': '(604) 555-3745'
}, {
    'Id': 'BSBEV',
    'CompanyName': 'Bad Beverages',
    'ContactName': 'Victoria Ashworth',
    'ContactTitle': 'Sales Representative',
    'Address': 'Fauntleroy Circus',
    'City': 'London',
    'PostalCode': 'EC2 5NT',
    'Country': 'UK',
    'Phone': '(171) 555-1212'
}, {
    'Id': 'CACTU',
    'CompanyName': 'Cactus Comidas para llevar',
    'ContactName': 'Patricio Simpson',
    'ContactTitle': 'Sales Agent',
    'Address': 'Cerrito 333',
    'City': 'Buenos Aires',
    'PostalCode': '1010',
    'Country': 'Argentina',
    'Phone': '(1) 135-5555',
    'Fax': '(1) 135-4892'
}, {
    'Id': 'CENTC',
    'CompanyName': 'Centro comercial Moctezuma',
    'ContactName': 'Francisco Chang',
    'ContactTitle': 'Marketing Manager',
    'Address': 'Sierras de Granada 9993',
    'City': 'México D.F.',
    'PostalCode': '05022',
    'Country': 'Mexico',
    'Phone': '(5) 555-3392',
    'Fax': '(5) 555-7293'
}, {
    'Id': 'CHOPS',
    'CompanyName': 'Chop-suey Chinese',
    'ContactName': 'Yang Wang',
    'ContactTitle': 'Owner',
    'Address': 'Hauptstr. 29',
    'City': 'Bern',
    'PostalCode': '3012',
    'Country': 'Switzerland',
    'Phone': '0452-076545'
}, {
    'Id': 'COMMI',
    'CompanyName': 'Comércio Mineiro',
    'ContactName': 'Pedro Afonso',
    'ContactTitle': 'Sales Associate',
    'Address': 'Av. dos Lusíadas, 23',
    'City': 'Sao Paulo',
    'Region': 'SP',
    'PostalCode': '05432-043',
    'Country': 'Brazil',
    'Phone': '(11) 555-7647'
}, {
    'Id': 'CONSH',
    'CompanyName': 'Consolidated Holdings',
    'ContactName': 'Elizabeth Brown',
    'ContactTitle': 'Sales Representative',
    'Address': 'Berkeley Gardens 12  Brewery',
    'City': 'London',
    'PostalCode': 'WX1 6LT',
    'Country': 'UK',
    'Phone': '(171) 555-2282',
    'Fax': '(171) 555-9199'
}, {
    'Id': 'DRACD',
    'CompanyName': 'Drachenblut Delikatessen',
    'ContactName': 'Sven Ottlieb',
    'ContactTitle': 'Order Administrator',
    'Address': 'Walserweg 21',
    'City': 'Aachen',
    'PostalCode': '52066',
    'Country': 'Germany',
    'Phone': '0241-039123',
    'Fax': '0241-059428'
}, {
    'Id': 'DUMON',
    'CompanyName': 'Du monde entier',
    'ContactName': 'Janine Labrune',
    'ContactTitle': 'Owner',
    'Address': '67, rue des Cinquante Otages',
    'City': 'Nantes',
    'PostalCode': '44000',
    'Country': 'France',
    'Phone': '40.67.88.88',
    'Fax': '40.67.89.89'
}, {
    'Id': 'EASTC',
    'CompanyName': 'Eastern Connection',
    'ContactName': 'Ann Devon',
    'ContactTitle': 'Sales Agent',
    'Address': '35 King George',
    'City': 'London',
    'PostalCode': 'WX3 6FW',
    'Country': 'UK',
    'Phone': '(171) 555-0297',
    'Fax': '(171) 555-3373'
}, {
    'Id': 'ERNSH',
    'CompanyName': 'Ernst Handel',
    'ContactName': 'Roland Mendel',
    'ContactTitle': 'Sales Manager',
    'Address': 'Kirchgasse 6',
    'City': 'Graz',
    'PostalCode': '8010',
    'Country': 'Austria',
    'Phone': '7675-3425',
    'Fax': '7675-3426'
}, {
    'Id': 'FAMIA',
    'CompanyName': 'Familia Arquibaldo',
    'ContactName': 'Aria Cruz',
    'ContactTitle': 'Marketing Assistant',
    'Address': 'Rua Orós, 92',
    'City': 'Sao Paulo',
    'Region': 'SP',
    'PostalCode': '05442-030',
    'Country': 'Brazil',
    'Phone': '(11) 555-9857'
}, {
    'Id': 'FISSA',
    'CompanyName': 'FISSA Fabrica Inter. Salchichas S.A.',
    'ContactName': 'Diego Roel',
    'ContactTitle': 'Accounting Manager',
    'Address': 'C/ Moralzarzal, 86',
    'City': 'Madrid',
    'PostalCode': '28034',
    'Country': 'Spain',
    'Phone': '(91) 555 94 44',
    'Fax': '(91) 555 55 93'
}, {
    'Id': 'FOLIG',
    'CompanyName': 'Folies gourmandes',
    'ContactName': 'Martine Rancé',
    'ContactTitle': 'Assistant Sales Agent',
    'Address': '184, chaussée de Tournai',
    'City': 'Lille',
    'PostalCode': '59000',
    'Country': 'France',
    'Phone': '20.16.10.16',
    'Fax': '20.16.10.17'
}, {
    'Id': 'FOLKO',
    'CompanyName': 'Folk och fä HB',
    'ContactName': 'Maria Larsson',
    'ContactTitle': 'Owner',
    'Address': 'Åkergatan 24',
    'City': 'Bräcke',
    'PostalCode': 'S-844 67',
    'Country': 'Sweden',
    'Phone': '0695-34 67 21'
}, {
    'Id': 'FRANK',
    'CompanyName': 'Frankenversand',
    'ContactName': 'Peter Franken',
    'ContactTitle': 'Marketing Manager',
    'Address': 'Berliner Platz 43',
    'City': 'München',
    'PostalCode': '80805',
    'Country': 'Germany',
    'Phone': '089-0877310',
    'Fax': '089-0877451'
}, {
    'Id': 'FRANR',
    'CompanyName': 'France restauration',
    'ContactName': 'Carine Schmitt',
    'ContactTitle': 'Marketing Manager',
    'Address': '54, rue Royale',
    'City': 'Nantes',
    'PostalCode': '44000',
    'Country': 'France',
    'Phone': '40.32.21.21',
    'Fax': '40.32.21.20'
}, {
    'Id': 'FRANS',
    'CompanyName': 'Franchi S.p.A.',
    'ContactName': 'Paolo Accorti',
    'ContactTitle': 'Sales Representative',
    'Address': 'Via Monte Bianco 34',
    'City': 'Torino',
    'PostalCode': '10100',
    'Country': 'Italy',
    'Phone': '011-4988260',
    'Fax': '011-4988261'
}, {
    'Id': 'FURIB',
    'CompanyName': 'Furia Bacalhau e Frutos do Mar',
    'ContactName': 'Lino Rodriguez',
    'ContactTitle': 'Sales Manager',
    'Address': 'Jardim das rosas n. 32',
    'City': 'Lisboa',
    'PostalCode': '1675',
    'Country': 'Portugal',
    'Phone': '(1) 354-2534',
    'Fax': '(1) 354-2535'
}, {
    'Id': 'GALED',
    'CompanyName': 'Galería del gastrónomo',
    'ContactName': 'Eduardo Saavedra',
    'ContactTitle': 'Marketing Manager',
    'Address': 'Rambla de Cataluña, 23',
    'City': 'Barcelona',
    'PostalCode': '08022',
    'Country': 'Spain',
    'Phone': '(93) 203 4560',
    'Fax': '(93) 203 4561'
}, {
    'Id': 'GODOS',
    'CompanyName': 'Godos Cocina Típica',
    'ContactName': 'José Pedro Freyre',
    'ContactTitle': 'Sales Manager',
    'Address': 'C/ Romero, 33',
    'City': 'Sevilla',
    'PostalCode': '41101',
    'Country': 'Spain',
    'Phone': '(95) 555 82 82'
}, {
    'Id': 'GOURL',
    'CompanyName': 'Gourmet Lanchonetes',
    'ContactName': 'André Fonseca',
    'ContactTitle': 'Sales Associate',
    'Address': 'Av. Brasil, 442',
    'City': 'Campinas',
    'Region': 'SP',
    'PostalCode': '04876-786',
    'Country': 'Brazil',
    'Phone': '(11) 555-9482'
}, {
    'Id': 'GREAL',
    'CompanyName': 'Great Lakes Food Market',
    'ContactName': 'Howard Snyder',
    'ContactTitle': 'Marketing Manager',
    'Address': '2732 Baker Blvd.',
    'City': 'Eugene',
    'Region': 'OR',
    'PostalCode': '97403',
    'Country': 'USA',
    'Phone': '(503) 555-7555'
}, {
    'Id': 'GROSR',
    'CompanyName': 'GROSELLA-Restaurante',
    'ContactName': 'Manuel Pereira',
    'ContactTitle': 'Owner',
    'Address': '5ª Ave. Los Palos Grandes',
    'City': 'Caracas',
    'Region': 'DF',
    'PostalCode': '1081',
    'Country': 'Venezuela',
    'Phone': '(2) 283-2951',
    'Fax': '(2) 283-3397'
}, {
    'Id': 'HANAR',
    'CompanyName': 'Hanari Carnes',
    'ContactName': 'Mario Pontes',
    'ContactTitle': 'Accounting Manager',
    'Address': 'Rua do Paço, 67',
    'City': 'Rio de Janeiro',
    'Region': 'RJ',
    'PostalCode': '05454-876',
    'Country': 'Brazil',
    'Phone': '(21) 555-0091',
    'Fax': '(21) 555-8765'
}, {
    'Id': 'HILAA',
    'CompanyName': 'HILARION-Abastos',
    'ContactName': 'Carlos Hernández',
    'ContactTitle': 'Sales Representative',
    'Address': 'Carrera 22 con Ave. Carlos Soublette #8-35',
    'City': 'San Cristóbal',
    'Region': 'Táchira',
    'PostalCode': '5022',
    'Country': 'Venezuela',
    'Phone': '(5) 555-1340',
    'Fax': '(5) 555-1948'
}, {
    'Id': 'HUNGC',
    'CompanyName': 'Hungry Coyote Import Store',
    'ContactName': 'Yoshi Latimer',
    'ContactTitle': 'Sales Representative',
    'Address': 'City Center Plaza 516 Main St.',
    'City': 'Elgin',
    'Region': 'OR',
    'PostalCode': '97827',
    'Country': 'USA',
    'Phone': '(503) 555-6874',
    'Fax': '(503) 555-2376'
}, {
    'Id': 'HUNGO',
    'CompanyName': 'Hungry Owl All-Night Grocers',
    'ContactName': 'Patricia McKenna',
    'ContactTitle': 'Sales Associate',
    'Address': '8 Johnstown Road',
    'City': 'Cork',
    'Region': 'Co. Cork',
    'Country': 'Ireland',
    'Phone': '2967 542',
    'Fax': '2967 3333'
}, {
    'Id': 'ISLAT',
    'CompanyName': 'Island Trading',
    'ContactName': 'Helen Bennett',
    'ContactTitle': 'Marketing Manager',
    'Address': 'Garden House Crowther Way',
    'City': 'Cowes',
    'Region': 'Isle of Wight',
    'PostalCode': 'PO31 7PJ',
    'Country': 'UK',
    'Phone': '(198) 555-8888'
}, {
    'Id': 'KOENE',
    'CompanyName': 'Königlich Essen',
    'ContactName': 'Philip Cramer',
    'ContactTitle': 'Sales Associate',
    'Address': 'Maubelstr. 90',
    'City': 'Brandenburg',
    'PostalCode': '14776',
    'Country': 'Germany',
    'Phone': '0555-09876'
}, {
    'Id': 'LAUGB',
    'CompanyName': 'Laughing Bacchus Wine Cellars',
    'ContactName': 'Yoshi Tannamuri',
    'ContactTitle': 'Marketing Assistant',
    'Address': '1900 Oak St.',
    'City': 'Vancouver',
    'Region': 'BC',
    'PostalCode': 'V3F 2K1',
    'Country': 'Canada',
    'Phone': '(604) 555-3392',
    'Fax': '(604) 555-7293'
}, {
    'Id': 'LAZYK',
    'CompanyName': 'Lazy K Kountry Store',
    'ContactName': 'John Steel',
    'ContactTitle': 'Marketing Manager',
    'Address': '12 Orchestra Terrace',
    'City': 'Walla Walla',
    'Region': 'WA',
    'PostalCode': '99362',
    'Country': 'USA',
    'Phone': '(509) 555-7969',
    'Fax': '(509) 555-6221'
}, {
    'Id': 'LEHMS',
    'CompanyName': 'Lehmanns Marktstand',
    'ContactName': 'Renate Messner',
    'ContactTitle': 'Sales Representative',
    'Address': 'Magazinweg 7',
    'City': 'Frankfurt a.M.',
    'PostalCode': '60528',
    'Country': 'Germany',
    'Phone': '069-0245984',
    'Fax': '069-0245874'
},  {
    'Id': 'LILAS',
    'CompanyName': 'LILA-Supermercado',
    'ContactName': 'Carlos González',
    'ContactTitle': 'Accounting Manager',
    'Address': 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo',
    'City': 'Barquisimeto',
    'Region': 'Lara',
    'PostalCode': '3508',
    'Country': 'Venezuela',
    'Phone': '(9) 331-6954',
    'Fax': '(9) 331-7256'
}, {
    'Id': 'LINOD',
    'CompanyName': 'LINO-Delicateses',
    'ContactName': 'Felipe Izquierdo',
    'ContactTitle': 'Owner',
    'Address': 'Ave. 5 de Mayo Porlamar',
    'City': 'I. de Margarita',
    'Region': 'Nueva Esparta',
    'PostalCode': '4980',
    'Country': 'Venezuela',
    'Phone': '(8) 34-56-12',
    'Fax': '(8) 34-93-93'
}, {
    'Id': 'LONEP',
    'CompanyName': 'Lonesome Pine Restaurant',
    'ContactName': 'Fran Wilson',
    'ContactTitle': 'Sales Manager',
    'Address': '89 Chiaroscuro Rd.',
    'City': 'Portland',
    'Region': 'OR',
    'PostalCode': '97219',
    'Country': 'USA',
    'Phone': '(503) 555-9573',
    'Fax': '(503) 555-9646'
}, {
    'Id': 'MAGAA',
    'CompanyName': 'Magazzini Alimentari Riuniti',
    'ContactName': 'Giovanni Rovelli',
    'ContactTitle': 'Marketing Manager',
    'Address': 'Via Ludovico il Moro 22',
    'City': 'Bergamo',
    'PostalCode': '24100',
    'Country': 'Italy',
    'Phone': '035-640230',
    'Fax': '035-640231'
}, {
    'Id': 'MAISD',
    'CompanyName': 'Maison Dewey',
    'ContactName': 'Catherine Dewey',
    'ContactTitle': 'Sales Agent',
    'Address': 'Rue Joseph-Bens 532',
    'City': 'Bruxelles',
    'PostalCode': 'B-1180',
    'Country': 'Belgium',
    'Phone': '(02) 201 24 67',
    'Fax': '(02) 201 24 68'
}, {
    'Id': 'MEREP',
    'CompanyName': 'Mère Paillarde',
    'ContactName': 'Jean Fresnière',
    'ContactTitle': 'Marketing Assistant',
    'Address': '43 rue St. Laurent',
    'City': 'Montréal',
    'Region': 'Québec',
    'PostalCode': 'H1J 1C3',
    'Country': 'Canada',
    'Phone': '(514) 555-8054',
    'Fax': '(514) 555-8055'
}, {
    'Id': 'MORGK',
    'CompanyName': 'Morgenstern Gesundkost',
    'ContactName': 'Alexander Feuer',
    'ContactTitle': 'Marketing Assistant',
    'Address': 'Heerstr. 22',
    'City': 'Leipzig',
    'PostalCode': '04179',
    'Country': 'Germany',
    'Phone': '0342-023176'
}, {
    'Id': 'NORTS',
    'CompanyName': 'North/South',
    'ContactName': 'Simon Crowther',
    'ContactTitle': 'Sales Associate',
    'Address': 'South House 300 Queensbridge',
    'City': 'London',
    'PostalCode': 'SW7 1RZ',
    'Country': 'UK',
    'Phone': '(171) 555-7733',
    'Fax': '(171) 555-2530'
}, {
    'Id': 'OCEAN',
    'CompanyName': 'Océano Atlántico Ltda.',
    'ContactName': 'Yvonne Moncada',
    'ContactTitle': 'Sales Agent',
    'Address': 'Ing. Gustavo Moncada 8585 Piso 20-A',
    'City': 'Buenos Aires',
    'PostalCode': '1010',
    'Country': 'Argentina',
    'Phone': '(1) 135-5333',
    'Fax': '(1) 135-5535'
}, {
    'Id': 'OLDWO',
    'CompanyName': 'Old World Delicatessen',
    'ContactName': 'Rene Phillips',
    'ContactTitle': 'Sales Representative',
    'Address': '2743 Bering St.',
    'City': 'Anchorage',
    'Region': 'AK',
    'PostalCode': '99508',
    'Country': 'USA',
    'Phone': '(907) 555-7584',
    'Fax': '(907) 555-2880'
}, {
    'Id': 'OTTIK',
    'CompanyName': 'Ottilies Käseladen',
    'ContactName': 'Henriette Pfalzheim',
    'ContactTitle': 'Owner',
    'Address': 'Mehrheimerstr. 369',
    'City': 'Köln',
    'PostalCode': '50739',
    'Country': 'Germany',
    'Phone': '0221-0644327',
    'Fax': '0221-0765721'
}, {
    'Id': 'PARIS',
    'CompanyName': 'Paris spécialités',
    'ContactName': 'Marie Bertrand',
    'ContactTitle': 'Owner',
    'Address': '265, boulevard Charonne',
    'City': 'Paris',
    'PostalCode': '75012',
    'Country': 'France',
    'Phone': '(1) 42.34.22.66',
    'Fax': '(1) 42.34.22.77'
}, {
    'Id': 'PERIC',
    'CompanyName': 'Pericles Comidas clásicas',
    'ContactName': 'Guillermo Fernández',
    'ContactTitle': 'Sales Representative',
    'Address': 'Calle Dr. Jorge Cash 321',
    'City': 'México D.F.',
    'PostalCode': '05033',
    'Country': 'Mexico',
    'Phone': '(5) 552-3745',
    'Fax': '(5) 545-3745'
}, {
    'Id': 'PICCO',
    'CompanyName': 'Piccolo und mehr',
    'ContactName': 'Georg Pipps',
    'ContactTitle': 'Sales Manager',
    'Address': 'Geislweg 14',
    'City': 'Salzburg',
    'PostalCode': '5020',
    'Country': 'Austria',
    'Phone': '6562-9722',
    'Fax': '6562-9723'
}, {
    'Id': 'PRINI',
    'CompanyName': 'Princesa Isabel Vinhos',
    'ContactName': 'Isabel de Castro',
    'ContactTitle': 'Sales Representative',
    'Address': 'Estrada da saúde n. 58',
    'City': 'Lisboa',
    'PostalCode': '1756',
    'Country': 'Portugal',
    'Phone': '(1) 356-5634'
}, {
    'Id': 'QUEDE',
    'CompanyName': 'Que Delícia',
    'ContactName': 'Bernardo Batista',
    'ContactTitle': 'Accounting Manager',
    'Address': 'Rua da Panificadora, 12',
    'City': 'Rio de Janeiro',
    'Region': 'RJ',
    'PostalCode': '02389-673',
    'Country': 'Brazil',
    'Phone': '(21) 555-4252',
    'Fax': '(21) 555-4545'
}, {
    'Id': 'QUEEN',
    'CompanyName': 'Queen Cozinha',
    'ContactName': 'Lúcia Carvalho',
    'ContactTitle': 'Marketing Assistant',
    'Address': 'Alameda dos Canàrios, 891',
    'City': 'Sao Paulo',
    'Region': 'SP',
    'PostalCode': '05487-020',
    'Country': 'Brazil',
    'Phone': '(11) 555-1189'
}, {
    'Id': 'QUICK',
    'CompanyName': 'QUICK-Stop',
    'ContactName': 'Horst Kloss',
    'ContactTitle': 'Accounting Manager',
    'Address': 'Taucherstraße 10',
    'City': 'Cunewalde',
    'PostalCode': '01307',
    'Country': 'Germany',
    'Phone': '0372-035188'
}, {
    'Id': 'RANCH',
    'CompanyName': 'Rancho grande',
    'ContactName': 'Sergio Gutiérrez',
    'ContactTitle': 'Sales Representative',
    'Address': 'Av. del Libertador 900',
    'City': 'Buenos Aires',
    'PostalCode': '1010',
    'Country': 'Argentina',
    'Phone': '(1) 123-5555',
    'Fax': '(1) 123-5556'
}, {
    'Id': 'RATTC',
    'CompanyName': 'Rattlesnake Canyon Grocery',
    'ContactName': 'Paula Wilson',
    'ContactTitle': 'Assistant Sales Representative',
    'Address': '2817 Milton Dr.',
    'City': 'Albuquerque',
    'Region': 'NM',
    'PostalCode': '87110',
    'Country': 'USA',
    'Phone': '(505) 555-5939',
    'Fax': '(505) 555-3620'
}, {
    'Id': 'REGGC',
    'CompanyName': 'Reggiani Caseifici',
    'ContactName': 'Maurizio Moroni',
    'ContactTitle': 'Sales Associate',
    'Address': 'Strada Provinciale 124',
    'City': 'Reggio Emilia',
    'PostalCode': '42100',
    'Country': 'Italy',
    'Phone': '0522-556721',
    'Fax': '0522-556722'
}, {
    'Id': 'RICAR',
    'CompanyName': 'Ricardo Adocicados',
    'ContactName': 'Janete Limeira',
    'ContactTitle': 'Assistant Sales Agent',
    'Address': 'Av. Copacabana, 267',
    'City': 'Rio de Janeiro',
    'Region': 'RJ',
    'PostalCode': '02389-890',
    'Country': 'Brazil',
    'Phone': '(21) 555-3412'
}, {
    'Id': 'RICSU',
    'CompanyName': 'Richter Supermarkt',
    'ContactName': 'Michael Holz',
    'ContactTitle': 'Sales Manager',
    'Address': 'Grenzacherweg 237',
    'City': 'Genève',
    'PostalCode': '1203',
    'Country': 'Switzerland',
    'Phone': '0897-034214'
}, {
    'Id': 'ROMEY',
    'CompanyName': 'Romero y tomillo',
    'ContactName': 'Alejandra Camino',
    'ContactTitle': 'Accounting Manager',
    'Address': 'Gran Vía, 1',
    'City': 'Madrid',
    'PostalCode': '28001',
    'Country': 'Spain',
    'Phone': '(91) 745 6200',
    'Fax': '(91) 745 6210'
}, {
    'Id': 'SANTG',
    'CompanyName': 'Santé Gourmet',
    'ContactName': 'Jonas Bergulfsen',
    'ContactTitle': 'Owner',
    'Address': 'Erling Skakkes gate 78',
    'City': 'Stavern',
    'PostalCode': '4110',
    'Country': 'Norway',
    'Phone': '07-98 92 35',
    'Fax': '07-98 92 47'
}, {
    'Id': 'SAVEA',
    'CompanyName': 'Save-a-lot Markets',
    'ContactName': 'Jose Pavarotti',
    'ContactTitle': 'Sales Representative',
    'Address': '187 Suffolk Ln.',
    'City': 'Boise',
    'Region': 'ID',
    'PostalCode': '83720',
    'Country': 'USA',
    'Phone': '(208) 555-8097'
}, {
    'Id': 'SEVES',
    'CompanyName': 'Seven Seas Imports',
    'ContactName': 'Hari Kumar',
    'ContactTitle': 'Sales Manager',
    'Address': '90 Wadhurst Rd.',
    'City': 'London',
    'PostalCode': 'OX15 4NB',
    'Country': 'UK',
    'Phone': '(171) 555-1717',
    'Fax': '(171) 555-5646'
}, {
    'Id': 'SIMOB',
    'CompanyName': 'Simons bistro',
    'ContactName': 'Jytte Petersen',
    'ContactTitle': 'Owner',
    'Address': 'Vinbæltet 34',
    'City': 'Kobenhavn',
    'PostalCode': '1734',
    'Country': 'Denmark',
    'Phone': '31 12 34 56',
    'Fax': '31 13 35 57'
}, {
    'Id': 'SPECD',
    'CompanyName': 'Spécialités du monde',
    'ContactName': 'Dominique Perrier',
    'ContactTitle': 'Marketing Manager',
    'Address': '25, rue Lauriston',
    'City': 'Paris',
    'PostalCode': '75016',
    'Country': 'France',
    'Phone': '(1) 47.55.60.10',
    'Fax': '(1) 47.55.60.20'
}, {
    'Id': 'SPLIR',
    'CompanyName': 'Split Rail Beer & Ale',
    'ContactName': 'Art Braunschweiger',
    'ContactTitle': 'Sales Manager',
    'Address': 'P.O. Box 555',
    'City': 'Lander',
    'Region': 'WY',
    'PostalCode': '82520',
    'Country': 'USA',
    'Phone': '(307) 555-4680',
    'Fax': '(307) 555-6525'
}, {
    'Id': 'SUPRD',
    'CompanyName': 'Suprêmes délices',
    'ContactName': 'Pascale Cartrain',
    'ContactTitle': 'Accounting Manager',
    'Address': 'Boulevard Tirou, 255',
    'City': 'Charleroi',
    'PostalCode': 'B-6000',
    'Country': 'Belgium',
    'Phone': '(071) 23 67 22 20',
    'Fax': '(071) 23 67 22 21'
}, {
    'Id': 'THEBI',
    'CompanyName': 'The Big Cheese',
    'ContactName': 'Liz Nixon',
    'ContactTitle': 'Marketing Manager',
    'Address': '89 Jefferson Way Suite 2',
    'City': 'Portland',
    'Region': 'OR',
    'PostalCode': '97201',
    'Country': 'USA',
    'Phone': '(503) 555-3612'
}, {
    'Id': 'THECR',
    'CompanyName': 'The Cracker Box',
    'ContactName': 'Liu Wong',
    'ContactTitle': 'Marketing Assistant',
    'Address': '55 Grizzly Peak Rd.',
    'City': 'Butte',
    'Region': 'MT',
    'PostalCode': '59801',
    'Country': 'USA',
    'Phone': '(406) 555-5834',
    'Fax': '(406) 555-8083'
}, {
    'Id': 'TOMSP',
    'CompanyName': 'Toms Spezialitäten',
    'ContactName': 'Karin Josephs',
    'ContactTitle': 'Marketing Manager',
    'Address': 'Luisenstr. 48',
    'City': 'Münster',
    'PostalCode': '44087',
    'Country': 'Germany',
    'Phone': '0251-031259',
    'Fax': '0251-035695'
}, {
    'Id': 'TORTU',
    'CompanyName': 'Tortuga Restaurante',
    'ContactName': 'Miguel Angel Paolino',
    'ContactTitle': 'Owner',
    'Address': 'Avda. Azteca 123',
    'City': 'México D.F.',
    'PostalCode': '05033',
    'Country': 'Mexico',
    'Phone': '(5) 555-2933'
}, {
    'Id': 'TRADH',
    'CompanyName': 'Tradição Hipermercados',
    'ContactName': 'Anabela Domingues',
    'ContactTitle': 'Sales Representative',
    'Address': 'Av. Inês de Castro, 414',
    'City': 'Sao Paulo',
    'Region': 'SP',
    'PostalCode': '05634-030',
    'Country': 'Brazil',
    'Phone': '(11) 555-2167',
    'Fax': '(11) 555-2168'
}, {
    'Id': 'VAFFE',
    'CompanyName': 'Vaffeljernet',
    'ContactName': 'Palle Ibsen',
    'ContactTitle': 'Sales Manager',
    'Address': 'Smagsloget 45',
    'City': 'Århus',
    'PostalCode': '8200',
    'Country': 'Denmark',
    'Phone': '86 21 32 43',
    'Fax': '86 22 33 44'
}, {
    'Id': 'VICTE',
    'CompanyName': 'Victuailles en stock',
    'ContactName': 'Mary Saveley',
    'ContactTitle': 'Sales Agent',
    'Address': '2, rue du Commerce',
    'City': 'Lyon',
    'PostalCode': '69004',
    'Country': 'France',
    'Phone': '78.32.54.86',
    'Fax': '78.32.54.87'
},  {
    'Id': 'WANDK',
    'CompanyName': 'Die Wandernde Kuh',
    'ContactName': 'Rita Müller',
    'ContactTitle': 'Sales Representative',
    'Address': 'Adenauerallee 900',
    'City': 'Stuttgart',
    'PostalCode': '70563',
    'Country': 'Germany',
    'Phone': '0711-020361',
    'Fax': '0711-035428'
}, {
    'Id': 'WARTH',
    'CompanyName': 'Wartian Herkku',
    'ContactName': 'Pirkko Koskitalo',
    'ContactTitle': 'Accounting Manager',
    'Address': 'Torikatu 38',
    'City': 'Oulu',
    'PostalCode': '90110',
    'Country': 'Finland',
    'Phone': '981-443655',
    'Fax': '981-443655'
}, {
    'Id': 'WELLI',
    'CompanyName': 'Wellington Importadora',
    'ContactName': 'Paula Parente',
    'ContactTitle': 'Sales Manager',
    'Address': 'Rua do Mercado, 12',
    'City': 'Resende',
    'Region': 'SP',
    'PostalCode': '08737-363',
    'Country': 'Brazil',
    'Phone': '(14) 555-8122'
}, {
    'Id': 'WHITC',
    'CompanyName': 'White Clover Markets',
    'ContactName': 'Karl Jablonski',
    'ContactTitle': 'Owner',
    'Address': '305 - 14th Ave. S. Suite 3B',
    'City': 'Seattle',
    'Region': 'WA',
    'PostalCode': '98128',
    'Country': 'USA',
    'Phone': '(206) 555-4112',
    'Fax': '(206) 555-4115'
}, {
    'Id': 'WILMK',
    'CompanyName': 'Wilman Kala',
    'ContactName': 'Matti Karttunen',
    'ContactTitle': 'Owner/Marketing Assistant',
    'Address': 'Keskuskatu 45',
    'City': 'Helsinki',
    'PostalCode': '21240',
    'Country': 'Finland',
    'Phone': '90-224 8858',
    'Fax': '90-224 8858'
}, {
    'Id': 'WOLZA',
    'CompanyName': 'Wolski  Zajazd',
    'ContactName': 'Zbyszek Piestrzeniewicz',
    'ContactTitle': 'Owner',
    'Address': 'ul. Filtrowa 68',
    'City': 'Warszawa',
    'PostalCode': '01-012',
    'Country': 'Poland',
    'Phone': '(26) 642-7012',
    'Fax': '(26) 642-7012'
}];

Using Structural Directives

To show or hide particular Grid columns, use the ngIf Angular directive.

Unlike the hidden built-in option, *ngIf imposes certain limitations. As a result, when you use the *ngIf directive to conditionally control the columns of the Grid, particular features, such as the titles in specific grouping scenarios, grouping templates, and responsiveness, are not available.

import { Component } from '@angular/core';
import { sampleCustomers } from './customers';

@Component({
  selector: 'my-app',
  template: `
      <div class="row example-config">
          <div *ngFor="let column of columns" class="col-xs-12 col-md-3 example-col">
              <input type="checkbox"
                id="{{column}}"
                class="k-checkbox"
                [disabled]="isDisabled(column)"
                [checked]="!isHidden(column)"
                (change)="hideColumn(column)" />
              <label class="k-checkbox-label" for="{{column}}">{{column}}</label>
          </div>
      </div>

        <kendo-grid [data]="gridData">
          <kendo-grid-column field="CompanyName" title="Company Name" *ngIf="!isHidden('CompanyName')">
          </kendo-grid-column>
          <kendo-grid-column field="ContactName" title="Contact Name" *ngIf="!isHidden('ContactName')">
          </kendo-grid-column>
          <kendo-grid-column field="ContactTitle" title="ContactTitle" *ngIf="!isHidden('ContactTitle')">
          </kendo-grid-column>
        </kendo-grid>
    `
})
export class AppComponent {
  public gridData: any[] = sampleCustomers;

  public columns: string[] = [
    'CompanyName', 'ContactName', 'ContactTitle'
  ];

  public hiddenColumns: string[] = [];

  public isHidden(columnName: string): boolean {
    return this.hiddenColumns.indexOf(columnName) > -1;
  }

  public isDisabled(columnName: string): boolean {
    return this.columns.length - this.hiddenColumns.length === 1 && !this.isHidden(columnName);
  }

  public hideColumn(columnName: string): void {
    const hiddenColumns = this.hiddenColumns;

    if (!this.isHidden(columnName)) {
      hiddenColumns.push(columnName);
    } else {
      hiddenColumns.splice(hiddenColumns.indexOf(columnName), 1);
    }
  }
}
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { FormsModule } from '@angular/forms';
import { GridModule } from '@progress/kendo-angular-grid';

import { AppComponent } from './app.component';

@NgModule({
  imports: [ BrowserModule, BrowserAnimationsModule, FormsModule, GridModule ],
  declarations: [ AppComponent ],
  bootstrap: [ AppComponent ]
})

export class AppModule { }
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './ng.module';

enableProdMode();

const platform = platformBrowserDynamic();
platform.bootstrapModule(AppModule);
export const sampleCustomers = [{
    'Id': 'ALFKI',
    'CompanyName': 'Alfreds Futterkiste',
    'ContactName': 'Maria Anders',
    'ContactTitle': 'Sales Representative',
    'City': 'Berlin'
}, {
    'Id': 'ANATR',
    'CompanyName': 'Ana Trujillo Emparedados y helados',
    'ContactName': 'Ana Trujillo',
    'ContactTitle': 'Owner',
    'City': 'México D.F.'
}, {
    'Id': 'ANTON',
    'CompanyName': 'Antonio Moreno Taquería',
    'ContactName': 'Antonio Moreno',
    'ContactTitle': 'Owner',
    'City': 'México D.F.'
}, {
    'Id': 'AROUT',
    'CompanyName': 'Around the Horn',
    'ContactName': 'Thomas Hardy',
    'ContactTitle': 'Sales Representative',
    'City': 'London'
}, {
    'Id': 'BERGS',
    'CompanyName': 'Berglunds snabbköp',
    'ContactName': 'Christina Berglund',
    'ContactTitle': 'Order Administrator',
    'City': 'Luleå'
}, {
    'Id': 'BLAUS',
    'CompanyName': 'Blauer See Delikatessen',
    'ContactName': 'Hanna Moos',
    'ContactTitle': 'Sales Representative',
    'City': 'Mannheim'
}, {
    'Id': 'BLONP',
    'CompanyName': 'Blondesddsl père et fils',
    'ContactName': 'Frédérique Citeaux',
    'ContactTitle': 'Marketing Manager',
    'City': 'Strasbourg'
}, {
    'Id': 'BOLID',
    'CompanyName': 'Bólido Comidas preparadas',
    'ContactName': 'Martín Sommer',
    'ContactTitle': 'Owner',
    'City': 'Madrid'
}, {
    'Id': 'BONAP',
    'CompanyName': 'Bon app',
    'ContactName': 'Laurence Lebihan',
    'ContactTitle': 'Owner',
    'City': 'Marseille'
}, {
    'Id': 'BOTTM',
    'CompanyName': 'Bottom-Dollar Markets',
    'ContactName': 'Elizabeth Lincoln',
    'ContactTitle': 'Accounting Manager',
    'City': 'Tsawassen'
}];

export const customers = [{
    'Id': 'ALFKI',
    'CompanyName': 'Alfreds Futterkiste',
    'ContactName': 'Maria Anders',
    'ContactTitle': 'Sales Representative',
    'Address': 'Obere Str. 57',
    'City': 'Berlin',
    'PostalCode': '12209',
    'Country': 'Germany',
    'Phone': '030-0074321',
    'Fax': '030-0076545'
}, {
    'Id': 'ANATR',
    'CompanyName': 'Ana Trujillo Emparedados y helados',
    'ContactName': 'Ana Trujillo',
    'ContactTitle': 'Owner',
    'Address': 'Avda. de la Constitución 2222',
    'City': 'México D.F.',
    'PostalCode': '05021',
    'Country': 'Mexico',
    'Phone': '(5) 555-4729',
    'Fax': '(5) 555-3745'
}, {
    'Id': 'ANTON',
    'CompanyName': 'Antonio Moreno Taquería',
    'ContactName': 'Antonio Moreno',
    'ContactTitle': 'Owner',
    'Address': 'Mataderos  2312',
    'City': 'México D.F.',
    'PostalCode': '05023',
    'Country': 'Mexico',
    'Phone': '(5) 555-3932'
}, {
    'Id': 'AROUT',
    'CompanyName': 'Around the Horn',
    'ContactName': 'Thomas Hardy',
    'ContactTitle': 'Sales Representative',
    'Address': '120 Hanover Sq.',
    'City': 'London',
    'PostalCode': 'WA1 1DP',
    'Country': 'UK',
    'Phone': '(171) 555-7788',
    'Fax': '(171) 555-6750'
}, {
    'Id': 'BERGS',
    'CompanyName': 'Berglunds snabbköp',
    'ContactName': 'Christina Berglund',
    'ContactTitle': 'Order Administrator',
    'Address': 'Berguvsvägen  8',
    'City': 'Luleå',
    'PostalCode': 'S-958 22',
    'Country': 'Sweden',
    'Phone': '0921-12 34 65',
    'Fax': '0921-12 34 67'
}, {
    'Id': 'BLAUS',
    'CompanyName': 'Blauer See Delikatessen',
    'ContactName': 'Hanna Moos',
    'ContactTitle': 'Sales Representative',
    'Address': 'Forsterstr. 57',
    'City': 'Mannheim',
    'PostalCode': '68306',
    'Country': 'Germany',
    'Phone': '0621-08460',
    'Fax': '0621-08924'
}, {
    'Id': 'BLONP',
    'CompanyName': 'Blondesddsl père et fils',
    'ContactName': 'Frédérique Citeaux',
    'ContactTitle': 'Marketing Manager',
    'Address': '24, place Kléber',
    'City': 'Strasbourg',
    'PostalCode': '67000',
    'Country': 'France',
    'Phone': '88.60.15.31',
    'Fax': '88.60.15.32'
}, {
    'Id': 'BOLID',
    'CompanyName': 'Bólido Comidas preparadas',
    'ContactName': 'Martín Sommer',
    'ContactTitle': 'Owner',
    'Address': 'C/ Araquil, 67',
    'City': 'Madrid',
    'PostalCode': '28023',
    'Country': 'Spain',
    'Phone': '(91) 555 22 82',
    'Fax': '(91) 555 91 99'
}, {
    'Id': 'BONAP',
    'CompanyName': 'Bon app',
    'ContactName': 'Laurence Lebihan',
    'ContactTitle': 'Owner',
    'Address': '12, rue des Bouchers',
    'City': 'Marseille',
    'PostalCode': '13008',
    'Country': 'France',
    'Phone': '91.24.45.40',
    'Fax': '91.24.45.41'
}, {
    'Id': 'BOTTM',
    'CompanyName': 'Bottom-Dollar Markets',
    'ContactName': 'Elizabeth Lincoln',
    'ContactTitle': 'Accounting Manager',
    'Address': '23 Tsawassen Blvd.',
    'City': 'Tsawassen',
    'Region': 'BC',
    'PostalCode': 'T2F 8M4',
    'Country': 'Canada',
    'Phone': '(604) 555-4729',
    'Fax': '(604) 555-3745'
}, {
    'Id': 'BSBEV',
    'CompanyName': 'Bad Beverages',
    'ContactName': 'Victoria Ashworth',
    'ContactTitle': 'Sales Representative',
    'Address': 'Fauntleroy Circus',
    'City': 'London',
    'PostalCode': 'EC2 5NT',
    'Country': 'UK',
    'Phone': '(171) 555-1212'
}, {
    'Id': 'CACTU',
    'CompanyName': 'Cactus Comidas para llevar',
    'ContactName': 'Patricio Simpson',
    'ContactTitle': 'Sales Agent',
    'Address': 'Cerrito 333',
    'City': 'Buenos Aires',
    'PostalCode': '1010',
    'Country': 'Argentina',
    'Phone': '(1) 135-5555',
    'Fax': '(1) 135-4892'
}, {
    'Id': 'CENTC',
    'CompanyName': 'Centro comercial Moctezuma',
    'ContactName': 'Francisco Chang',
    'ContactTitle': 'Marketing Manager',
    'Address': 'Sierras de Granada 9993',
    'City': 'México D.F.',
    'PostalCode': '05022',
    'Country': 'Mexico',
    'Phone': '(5) 555-3392',
    'Fax': '(5) 555-7293'
}, {
    'Id': 'CHOPS',
    'CompanyName': 'Chop-suey Chinese',
    'ContactName': 'Yang Wang',
    'ContactTitle': 'Owner',
    'Address': 'Hauptstr. 29',
    'City': 'Bern',
    'PostalCode': '3012',
    'Country': 'Switzerland',
    'Phone': '0452-076545'
}, {
    'Id': 'COMMI',
    'CompanyName': 'Comércio Mineiro',
    'ContactName': 'Pedro Afonso',
    'ContactTitle': 'Sales Associate',
    'Address': 'Av. dos Lusíadas, 23',
    'City': 'Sao Paulo',
    'Region': 'SP',
    'PostalCode': '05432-043',
    'Country': 'Brazil',
    'Phone': '(11) 555-7647'
}, {
    'Id': 'CONSH',
    'CompanyName': 'Consolidated Holdings',
    'ContactName': 'Elizabeth Brown',
    'ContactTitle': 'Sales Representative',
    'Address': 'Berkeley Gardens 12  Brewery',
    'City': 'London',
    'PostalCode': 'WX1 6LT',
    'Country': 'UK',
    'Phone': '(171) 555-2282',
    'Fax': '(171) 555-9199'
}, {
    'Id': 'DRACD',
    'CompanyName': 'Drachenblut Delikatessen',
    'ContactName': 'Sven Ottlieb',
    'ContactTitle': 'Order Administrator',
    'Address': 'Walserweg 21',
    'City': 'Aachen',
    'PostalCode': '52066',
    'Country': 'Germany',
    'Phone': '0241-039123',
    'Fax': '0241-059428'
}, {
    'Id': 'DUMON',
    'CompanyName': 'Du monde entier',
    'ContactName': 'Janine Labrune',
    'ContactTitle': 'Owner',
    'Address': '67, rue des Cinquante Otages',
    'City': 'Nantes',
    'PostalCode': '44000',
    'Country': 'France',
    'Phone': '40.67.88.88',
    'Fax': '40.67.89.89'
}, {
    'Id': 'EASTC',
    'CompanyName': 'Eastern Connection',
    'ContactName': 'Ann Devon',
    'ContactTitle': 'Sales Agent',
    'Address': '35 King George',
    'City': 'London',
    'PostalCode': 'WX3 6FW',
    'Country': 'UK',
    'Phone': '(171) 555-0297',
    'Fax': '(171) 555-3373'
}, {
    'Id': 'ERNSH',
    'CompanyName': 'Ernst Handel',
    'ContactName': 'Roland Mendel',
    'ContactTitle': 'Sales Manager',
    'Address': 'Kirchgasse 6',
    'City': 'Graz',
    'PostalCode': '8010',
    'Country': 'Austria',
    'Phone': '7675-3425',
    'Fax': '7675-3426'
}, {
    'Id': 'FAMIA',
    'CompanyName': 'Familia Arquibaldo',
    'ContactName': 'Aria Cruz',
    'ContactTitle': 'Marketing Assistant',
    'Address': 'Rua Orós, 92',
    'City': 'Sao Paulo',
    'Region': 'SP',
    'PostalCode': '05442-030',
    'Country': 'Brazil',
    'Phone': '(11) 555-9857'
}, {
    'Id': 'FISSA',
    'CompanyName': 'FISSA Fabrica Inter. Salchichas S.A.',
    'ContactName': 'Diego Roel',
    'ContactTitle': 'Accounting Manager',
    'Address': 'C/ Moralzarzal, 86',
    'City': 'Madrid',
    'PostalCode': '28034',
    'Country': 'Spain',
    'Phone': '(91) 555 94 44',
    'Fax': '(91) 555 55 93'
}, {
    'Id': 'FOLIG',
    'CompanyName': 'Folies gourmandes',
    'ContactName': 'Martine Rancé',
    'ContactTitle': 'Assistant Sales Agent',
    'Address': '184, chaussée de Tournai',
    'City': 'Lille',
    'PostalCode': '59000',
    'Country': 'France',
    'Phone': '20.16.10.16',
    'Fax': '20.16.10.17'
}, {
    'Id': 'FOLKO',
    'CompanyName': 'Folk och fä HB',
    'ContactName': 'Maria Larsson',
    'ContactTitle': 'Owner',
    'Address': 'Åkergatan 24',
    'City': 'Bräcke',
    'PostalCode': 'S-844 67',
    'Country': 'Sweden',
    'Phone': '0695-34 67 21'
}, {
    'Id': 'FRANK',
    'CompanyName': 'Frankenversand',
    'ContactName': 'Peter Franken',
    'ContactTitle': 'Marketing Manager',
    'Address': 'Berliner Platz 43',
    'City': 'München',
    'PostalCode': '80805',
    'Country': 'Germany',
    'Phone': '089-0877310',
    'Fax': '089-0877451'
}, {
    'Id': 'FRANR',
    'CompanyName': 'France restauration',
    'ContactName': 'Carine Schmitt',
    'ContactTitle': 'Marketing Manager',
    'Address': '54, rue Royale',
    'City': 'Nantes',
    'PostalCode': '44000',
    'Country': 'France',
    'Phone': '40.32.21.21',
    'Fax': '40.32.21.20'
}, {
    'Id': 'FRANS',
    'CompanyName': 'Franchi S.p.A.',
    'ContactName': 'Paolo Accorti',
    'ContactTitle': 'Sales Representative',
    'Address': 'Via Monte Bianco 34',
    'City': 'Torino',
    'PostalCode': '10100',
    'Country': 'Italy',
    'Phone': '011-4988260',
    'Fax': '011-4988261'
}, {
    'Id': 'FURIB',
    'CompanyName': 'Furia Bacalhau e Frutos do Mar',
    'ContactName': 'Lino Rodriguez',
    'ContactTitle': 'Sales Manager',
    'Address': 'Jardim das rosas n. 32',
    'City': 'Lisboa',
    'PostalCode': '1675',
    'Country': 'Portugal',
    'Phone': '(1) 354-2534',
    'Fax': '(1) 354-2535'
}, {
    'Id': 'GALED',
    'CompanyName': 'Galería del gastrónomo',
    'ContactName': 'Eduardo Saavedra',
    'ContactTitle': 'Marketing Manager',
    'Address': 'Rambla de Cataluña, 23',
    'City': 'Barcelona',
    'PostalCode': '08022',
    'Country': 'Spain',
    'Phone': '(93) 203 4560',
    'Fax': '(93) 203 4561'
}, {
    'Id': 'GODOS',
    'CompanyName': 'Godos Cocina Típica',
    'ContactName': 'José Pedro Freyre',
    'ContactTitle': 'Sales Manager',
    'Address': 'C/ Romero, 33',
    'City': 'Sevilla',
    'PostalCode': '41101',
    'Country': 'Spain',
    'Phone': '(95) 555 82 82'
}, {
    'Id': 'GOURL',
    'CompanyName': 'Gourmet Lanchonetes',
    'ContactName': 'André Fonseca',
    'ContactTitle': 'Sales Associate',
    'Address': 'Av. Brasil, 442',
    'City': 'Campinas',
    'Region': 'SP',
    'PostalCode': '04876-786',
    'Country': 'Brazil',
    'Phone': '(11) 555-9482'
}, {
    'Id': 'GREAL',
    'CompanyName': 'Great Lakes Food Market',
    'ContactName': 'Howard Snyder',
    'ContactTitle': 'Marketing Manager',
    'Address': '2732 Baker Blvd.',
    'City': 'Eugene',
    'Region': 'OR',
    'PostalCode': '97403',
    'Country': 'USA',
    'Phone': '(503) 555-7555'
}, {
    'Id': 'GROSR',
    'CompanyName': 'GROSELLA-Restaurante',
    'ContactName': 'Manuel Pereira',
    'ContactTitle': 'Owner',
    'Address': '5ª Ave. Los Palos Grandes',
    'City': 'Caracas',
    'Region': 'DF',
    'PostalCode': '1081',
    'Country': 'Venezuela',
    'Phone': '(2) 283-2951',
    'Fax': '(2) 283-3397'
}, {
    'Id': 'HANAR',
    'CompanyName': 'Hanari Carnes',
    'ContactName': 'Mario Pontes',
    'ContactTitle': 'Accounting Manager',
    'Address': 'Rua do Paço, 67',
    'City': 'Rio de Janeiro',
    'Region': 'RJ',
    'PostalCode': '05454-876',
    'Country': 'Brazil',
    'Phone': '(21) 555-0091',
    'Fax': '(21) 555-8765'
}, {
    'Id': 'HILAA',
    'CompanyName': 'HILARION-Abastos',
    'ContactName': 'Carlos Hernández',
    'ContactTitle': 'Sales Representative',
    'Address': 'Carrera 22 con Ave. Carlos Soublette #8-35',
    'City': 'San Cristóbal',
    'Region': 'Táchira',
    'PostalCode': '5022',
    'Country': 'Venezuela',
    'Phone': '(5) 555-1340',
    'Fax': '(5) 555-1948'
}, {
    'Id': 'HUNGC',
    'CompanyName': 'Hungry Coyote Import Store',
    'ContactName': 'Yoshi Latimer',
    'ContactTitle': 'Sales Representative',
    'Address': 'City Center Plaza 516 Main St.',
    'City': 'Elgin',
    'Region': 'OR',
    'PostalCode': '97827',
    'Country': 'USA',
    'Phone': '(503) 555-6874',
    'Fax': '(503) 555-2376'
}, {
    'Id': 'HUNGO',
    'CompanyName': 'Hungry Owl All-Night Grocers',
    'ContactName': 'Patricia McKenna',
    'ContactTitle': 'Sales Associate',
    'Address': '8 Johnstown Road',
    'City': 'Cork',
    'Region': 'Co. Cork',
    'Country': 'Ireland',
    'Phone': '2967 542',
    'Fax': '2967 3333'
}, {
    'Id': 'ISLAT',
    'CompanyName': 'Island Trading',
    'ContactName': 'Helen Bennett',
    'ContactTitle': 'Marketing Manager',
    'Address': 'Garden House Crowther Way',
    'City': 'Cowes',
    'Region': 'Isle of Wight',
    'PostalCode': 'PO31 7PJ',
    'Country': 'UK',
    'Phone': '(198) 555-8888'
}, {
    'Id': 'KOENE',
    'CompanyName': 'Königlich Essen',
    'ContactName': 'Philip Cramer',
    'ContactTitle': 'Sales Associate',
    'Address': 'Maubelstr. 90',
    'City': 'Brandenburg',
    'PostalCode': '14776',
    'Country': 'Germany',
    'Phone': '0555-09876'
}, {
    'Id': 'LAUGB',
    'CompanyName': 'Laughing Bacchus Wine Cellars',
    'ContactName': 'Yoshi Tannamuri',
    'ContactTitle': 'Marketing Assistant',
    'Address': '1900 Oak St.',
    'City': 'Vancouver',
    'Region': 'BC',
    'PostalCode': 'V3F 2K1',
    'Country': 'Canada',
    'Phone': '(604) 555-3392',
    'Fax': '(604) 555-7293'
}, {
    'Id': 'LAZYK',
    'CompanyName': 'Lazy K Kountry Store',
    'ContactName': 'John Steel',
    'ContactTitle': 'Marketing Manager',
    'Address': '12 Orchestra Terrace',
    'City': 'Walla Walla',
    'Region': 'WA',
    'PostalCode': '99362',
    'Country': 'USA',
    'Phone': '(509) 555-7969',
    'Fax': '(509) 555-6221'
}, {
    'Id': 'LEHMS',
    'CompanyName': 'Lehmanns Marktstand',
    'ContactName': 'Renate Messner',
    'ContactTitle': 'Sales Representative',
    'Address': 'Magazinweg 7',
    'City': 'Frankfurt a.M.',
    'PostalCode': '60528',
    'Country': 'Germany',
    'Phone': '069-0245984',
    'Fax': '069-0245874'
},  {
    'Id': 'LILAS',
    'CompanyName': 'LILA-Supermercado',
    'ContactName': 'Carlos González',
    'ContactTitle': 'Accounting Manager',
    'Address': 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo',
    'City': 'Barquisimeto',
    'Region': 'Lara',
    'PostalCode': '3508',
    'Country': 'Venezuela',
    'Phone': '(9) 331-6954',
    'Fax': '(9) 331-7256'
}, {
    'Id': 'LINOD',
    'CompanyName': 'LINO-Delicateses',
    'ContactName': 'Felipe Izquierdo',
    'ContactTitle': 'Owner',
    'Address': 'Ave. 5 de Mayo Porlamar',
    'City': 'I. de Margarita',
    'Region': 'Nueva Esparta',
    'PostalCode': '4980',
    'Country': 'Venezuela',
    'Phone': '(8) 34-56-12',
    'Fax': '(8) 34-93-93'
}, {
    'Id': 'LONEP',
    'CompanyName': 'Lonesome Pine Restaurant',
    'ContactName': 'Fran Wilson',
    'ContactTitle': 'Sales Manager',
    'Address': '89 Chiaroscuro Rd.',
    'City': 'Portland',
    'Region': 'OR',
    'PostalCode': '97219',
    'Country': 'USA',
    'Phone': '(503) 555-9573',
    'Fax': '(503) 555-9646'
}, {
    'Id': 'MAGAA',
    'CompanyName': 'Magazzini Alimentari Riuniti',
    'ContactName': 'Giovanni Rovelli',
    'ContactTitle': 'Marketing Manager',
    'Address': 'Via Ludovico il Moro 22',
    'City': 'Bergamo',
    'PostalCode': '24100',
    'Country': 'Italy',
    'Phone': '035-640230',
    'Fax': '035-640231'
}, {
    'Id': 'MAISD',
    'CompanyName': 'Maison Dewey',
    'ContactName': 'Catherine Dewey',
    'ContactTitle': 'Sales Agent',
    'Address': 'Rue Joseph-Bens 532',
    'City': 'Bruxelles',
    'PostalCode': 'B-1180',
    'Country': 'Belgium',
    'Phone': '(02) 201 24 67',
    'Fax': '(02) 201 24 68'
}, {
    'Id': 'MEREP',
    'CompanyName': 'Mère Paillarde',
    'ContactName': 'Jean Fresnière',
    'ContactTitle': 'Marketing Assistant',
    'Address': '43 rue St. Laurent',
    'City': 'Montréal',
    'Region': 'Québec',
    'PostalCode': 'H1J 1C3',
    'Country': 'Canada',
    'Phone': '(514) 555-8054',
    'Fax': '(514) 555-8055'
}, {
    'Id': 'MORGK',
    'CompanyName': 'Morgenstern Gesundkost',
    'ContactName': 'Alexander Feuer',
    'ContactTitle': 'Marketing Assistant',
    'Address': 'Heerstr. 22',
    'City': 'Leipzig',
    'PostalCode': '04179',
    'Country': 'Germany',
    'Phone': '0342-023176'
}, {
    'Id': 'NORTS',
    'CompanyName': 'North/South',
    'ContactName': 'Simon Crowther',
    'ContactTitle': 'Sales Associate',
    'Address': 'South House 300 Queensbridge',
    'City': 'London',
    'PostalCode': 'SW7 1RZ',
    'Country': 'UK',
    'Phone': '(171) 555-7733',
    'Fax': '(171) 555-2530'
}, {
    'Id': 'OCEAN',
    'CompanyName': 'Océano Atlántico Ltda.',
    'ContactName': 'Yvonne Moncada',
    'ContactTitle': 'Sales Agent',
    'Address': 'Ing. Gustavo Moncada 8585 Piso 20-A',
    'City': 'Buenos Aires',
    'PostalCode': '1010',
    'Country': 'Argentina',
    'Phone': '(1) 135-5333',
    'Fax': '(1) 135-5535'
}, {
    'Id': 'OLDWO',
    'CompanyName': 'Old World Delicatessen',
    'ContactName': 'Rene Phillips',
    'ContactTitle': 'Sales Representative',
    'Address': '2743 Bering St.',
    'City': 'Anchorage',
    'Region': 'AK',
    'PostalCode': '99508',
    'Country': 'USA',
    'Phone': '(907) 555-7584',
    'Fax': '(907) 555-2880'
}, {
    'Id': 'OTTIK',
    'CompanyName': 'Ottilies Käseladen',
    'ContactName': 'Henriette Pfalzheim',
    'ContactTitle': 'Owner',
    'Address': 'Mehrheimerstr. 369',
    'City': 'Köln',
    'PostalCode': '50739',
    'Country': 'Germany',
    'Phone': '0221-0644327',
    'Fax': '0221-0765721'
}, {
    'Id': 'PARIS',
    'CompanyName': 'Paris spécialités',
    'ContactName': 'Marie Bertrand',
    'ContactTitle': 'Owner',
    'Address': '265, boulevard Charonne',
    'City': 'Paris',
    'PostalCode': '75012',
    'Country': 'France',
    'Phone': '(1) 42.34.22.66',
    'Fax': '(1) 42.34.22.77'
}, {
    'Id': 'PERIC',
    'CompanyName': 'Pericles Comidas clásicas',
    'ContactName': 'Guillermo Fernández',
    'ContactTitle': 'Sales Representative',
    'Address': 'Calle Dr. Jorge Cash 321',
    'City': 'México D.F.',
    'PostalCode': '05033',
    'Country': 'Mexico',
    'Phone': '(5) 552-3745',
    'Fax': '(5) 545-3745'
}, {
    'Id': 'PICCO',
    'CompanyName': 'Piccolo und mehr',
    'ContactName': 'Georg Pipps',
    'ContactTitle': 'Sales Manager',
    'Address': 'Geislweg 14',
    'City': 'Salzburg',
    'PostalCode': '5020',
    'Country': 'Austria',
    'Phone': '6562-9722',
    'Fax': '6562-9723'
}, {
    'Id': 'PRINI',
    'CompanyName': 'Princesa Isabel Vinhos',
    'ContactName': 'Isabel de Castro',
    'ContactTitle': 'Sales Representative',
    'Address': 'Estrada da saúde n. 58',
    'City': 'Lisboa',
    'PostalCode': '1756',
    'Country': 'Portugal',
    'Phone': '(1) 356-5634'
}, {
    'Id': 'QUEDE',
    'CompanyName': 'Que Delícia',
    'ContactName': 'Bernardo Batista',
    'ContactTitle': 'Accounting Manager',
    'Address': 'Rua da Panificadora, 12',
    'City': 'Rio de Janeiro',
    'Region': 'RJ',
    'PostalCode': '02389-673',
    'Country': 'Brazil',
    'Phone': '(21) 555-4252',
    'Fax': '(21) 555-4545'
}, {
    'Id': 'QUEEN',
    'CompanyName': 'Queen Cozinha',
    'ContactName': 'Lúcia Carvalho',
    'ContactTitle': 'Marketing Assistant',
    'Address': 'Alameda dos Canàrios, 891',
    'City': 'Sao Paulo',
    'Region': 'SP',
    'PostalCode': '05487-020',
    'Country': 'Brazil',
    'Phone': '(11) 555-1189'
}, {
    'Id': 'QUICK',
    'CompanyName': 'QUICK-Stop',
    'ContactName': 'Horst Kloss',
    'ContactTitle': 'Accounting Manager',
    'Address': 'Taucherstraße 10',
    'City': 'Cunewalde',
    'PostalCode': '01307',
    'Country': 'Germany',
    'Phone': '0372-035188'
}, {
    'Id': 'RANCH',
    'CompanyName': 'Rancho grande',
    'ContactName': 'Sergio Gutiérrez',
    'ContactTitle': 'Sales Representative',
    'Address': 'Av. del Libertador 900',
    'City': 'Buenos Aires',
    'PostalCode': '1010',
    'Country': 'Argentina',
    'Phone': '(1) 123-5555',
    'Fax': '(1) 123-5556'
}, {
    'Id': 'RATTC',
    'CompanyName': 'Rattlesnake Canyon Grocery',
    'ContactName': 'Paula Wilson',
    'ContactTitle': 'Assistant Sales Representative',
    'Address': '2817 Milton Dr.',
    'City': 'Albuquerque',
    'Region': 'NM',
    'PostalCode': '87110',
    'Country': 'USA',
    'Phone': '(505) 555-5939',
    'Fax': '(505) 555-3620'
}, {
    'Id': 'REGGC',
    'CompanyName': 'Reggiani Caseifici',
    'ContactName': 'Maurizio Moroni',
    'ContactTitle': 'Sales Associate',
    'Address': 'Strada Provinciale 124',
    'City': 'Reggio Emilia',
    'PostalCode': '42100',
    'Country': 'Italy',
    'Phone': '0522-556721',
    'Fax': '0522-556722'
}, {
    'Id': 'RICAR',
    'CompanyName': 'Ricardo Adocicados',
    'ContactName': 'Janete Limeira',
    'ContactTitle': 'Assistant Sales Agent',
    'Address': 'Av. Copacabana, 267',
    'City': 'Rio de Janeiro',
    'Region': 'RJ',
    'PostalCode': '02389-890',
    'Country': 'Brazil',
    'Phone': '(21) 555-3412'
}, {
    'Id': 'RICSU',
    'CompanyName': 'Richter Supermarkt',
    'ContactName': 'Michael Holz',
    'ContactTitle': 'Sales Manager',
    'Address': 'Grenzacherweg 237',
    'City': 'Genève',
    'PostalCode': '1203',
    'Country': 'Switzerland',
    'Phone': '0897-034214'
}, {
    'Id': 'ROMEY',
    'CompanyName': 'Romero y tomillo',
    'ContactName': 'Alejandra Camino',
    'ContactTitle': 'Accounting Manager',
    'Address': 'Gran Vía, 1',
    'City': 'Madrid',
    'PostalCode': '28001',
    'Country': 'Spain',
    'Phone': '(91) 745 6200',
    'Fax': '(91) 745 6210'
}, {
    'Id': 'SANTG',
    'CompanyName': 'Santé Gourmet',
    'ContactName': 'Jonas Bergulfsen',
    'ContactTitle': 'Owner',
    'Address': 'Erling Skakkes gate 78',
    'City': 'Stavern',
    'PostalCode': '4110',
    'Country': 'Norway',
    'Phone': '07-98 92 35',
    'Fax': '07-98 92 47'
}, {
    'Id': 'SAVEA',
    'CompanyName': 'Save-a-lot Markets',
    'ContactName': 'Jose Pavarotti',
    'ContactTitle': 'Sales Representative',
    'Address': '187 Suffolk Ln.',
    'City': 'Boise',
    'Region': 'ID',
    'PostalCode': '83720',
    'Country': 'USA',
    'Phone': '(208) 555-8097'
}, {
    'Id': 'SEVES',
    'CompanyName': 'Seven Seas Imports',
    'ContactName': 'Hari Kumar',
    'ContactTitle': 'Sales Manager',
    'Address': '90 Wadhurst Rd.',
    'City': 'London',
    'PostalCode': 'OX15 4NB',
    'Country': 'UK',
    'Phone': '(171) 555-1717',
    'Fax': '(171) 555-5646'
}, {
    'Id': 'SIMOB',
    'CompanyName': 'Simons bistro',
    'ContactName': 'Jytte Petersen',
    'ContactTitle': 'Owner',
    'Address': 'Vinbæltet 34',
    'City': 'Kobenhavn',
    'PostalCode': '1734',
    'Country': 'Denmark',
    'Phone': '31 12 34 56',
    'Fax': '31 13 35 57'
}, {
    'Id': 'SPECD',
    'CompanyName': 'Spécialités du monde',
    'ContactName': 'Dominique Perrier',
    'ContactTitle': 'Marketing Manager',
    'Address': '25, rue Lauriston',
    'City': 'Paris',
    'PostalCode': '75016',
    'Country': 'France',
    'Phone': '(1) 47.55.60.10',
    'Fax': '(1) 47.55.60.20'
}, {
    'Id': 'SPLIR',
    'CompanyName': 'Split Rail Beer & Ale',
    'ContactName': 'Art Braunschweiger',
    'ContactTitle': 'Sales Manager',
    'Address': 'P.O. Box 555',
    'City': 'Lander',
    'Region': 'WY',
    'PostalCode': '82520',
    'Country': 'USA',
    'Phone': '(307) 555-4680',
    'Fax': '(307) 555-6525'
}, {
    'Id': 'SUPRD',
    'CompanyName': 'Suprêmes délices',
    'ContactName': 'Pascale Cartrain',
    'ContactTitle': 'Accounting Manager',
    'Address': 'Boulevard Tirou, 255',
    'City': 'Charleroi',
    'PostalCode': 'B-6000',
    'Country': 'Belgium',
    'Phone': '(071) 23 67 22 20',
    'Fax': '(071) 23 67 22 21'
}, {
    'Id': 'THEBI',
    'CompanyName': 'The Big Cheese',
    'ContactName': 'Liz Nixon',
    'ContactTitle': 'Marketing Manager',
    'Address': '89 Jefferson Way Suite 2',
    'City': 'Portland',
    'Region': 'OR',
    'PostalCode': '97201',
    'Country': 'USA',
    'Phone': '(503) 555-3612'
}, {
    'Id': 'THECR',
    'CompanyName': 'The Cracker Box',
    'ContactName': 'Liu Wong',
    'ContactTitle': 'Marketing Assistant',
    'Address': '55 Grizzly Peak Rd.',
    'City': 'Butte',
    'Region': 'MT',
    'PostalCode': '59801',
    'Country': 'USA',
    'Phone': '(406) 555-5834',
    'Fax': '(406) 555-8083'
}, {
    'Id': 'TOMSP',
    'CompanyName': 'Toms Spezialitäten',
    'ContactName': 'Karin Josephs',
    'ContactTitle': 'Marketing Manager',
    'Address': 'Luisenstr. 48',
    'City': 'Münster',
    'PostalCode': '44087',
    'Country': 'Germany',
    'Phone': '0251-031259',
    'Fax': '0251-035695'
}, {
    'Id': 'TORTU',
    'CompanyName': 'Tortuga Restaurante',
    'ContactName': 'Miguel Angel Paolino',
    'ContactTitle': 'Owner',
    'Address': 'Avda. Azteca 123',
    'City': 'México D.F.',
    'PostalCode': '05033',
    'Country': 'Mexico',
    'Phone': '(5) 555-2933'
}, {
    'Id': 'TRADH',
    'CompanyName': 'Tradição Hipermercados',
    'ContactName': 'Anabela Domingues',
    'ContactTitle': 'Sales Representative',
    'Address': 'Av. Inês de Castro, 414',
    'City': 'Sao Paulo',
    'Region': 'SP',
    'PostalCode': '05634-030',
    'Country': 'Brazil',
    'Phone': '(11) 555-2167',
    'Fax': '(11) 555-2168'
}, {
    'Id': 'VAFFE',
    'CompanyName': 'Vaffeljernet',
    'ContactName': 'Palle Ibsen',
    'ContactTitle': 'Sales Manager',
    'Address': 'Smagsloget 45',
    'City': 'Århus',
    'PostalCode': '8200',
    'Country': 'Denmark',
    'Phone': '86 21 32 43',
    'Fax': '86 22 33 44'
}, {
    'Id': 'VICTE',
    'CompanyName': 'Victuailles en stock',
    'ContactName': 'Mary Saveley',
    'ContactTitle': 'Sales Agent',
    'Address': '2, rue du Commerce',
    'City': 'Lyon',
    'PostalCode': '69004',
    'Country': 'France',
    'Phone': '78.32.54.86',
    'Fax': '78.32.54.87'
},  {
    'Id': 'WANDK',
    'CompanyName': 'Die Wandernde Kuh',
    'ContactName': 'Rita Müller',
    'ContactTitle': 'Sales Representative',
    'Address': 'Adenauerallee 900',
    'City': 'Stuttgart',
    'PostalCode': '70563',
    'Country': 'Germany',
    'Phone': '0711-020361',
    'Fax': '0711-035428'
}, {
    'Id': 'WARTH',
    'CompanyName': 'Wartian Herkku',
    'ContactName': 'Pirkko Koskitalo',
    'ContactTitle': 'Accounting Manager',
    'Address': 'Torikatu 38',
    'City': 'Oulu',
    'PostalCode': '90110',
    'Country': 'Finland',
    'Phone': '981-443655',
    'Fax': '981-443655'
}, {
    'Id': 'WELLI',
    'CompanyName': 'Wellington Importadora',
    'ContactName': 'Paula Parente',
    'ContactTitle': 'Sales Manager',
    'Address': 'Rua do Mercado, 12',
    'City': 'Resende',
    'Region': 'SP',
    'PostalCode': '08737-363',
    'Country': 'Brazil',
    'Phone': '(14) 555-8122'
}, {
    'Id': 'WHITC',
    'CompanyName': 'White Clover Markets',
    'ContactName': 'Karl Jablonski',
    'ContactTitle': 'Owner',
    'Address': '305 - 14th Ave. S. Suite 3B',
    'City': 'Seattle',
    'Region': 'WA',
    'PostalCode': '98128',
    'Country': 'USA',
    'Phone': '(206) 555-4112',
    'Fax': '(206) 555-4115'
}, {
    'Id': 'WILMK',
    'CompanyName': 'Wilman Kala',
    'ContactName': 'Matti Karttunen',
    'ContactTitle': 'Owner/Marketing Assistant',
    'Address': 'Keskuskatu 45',
    'City': 'Helsinki',
    'PostalCode': '21240',
    'Country': 'Finland',
    'Phone': '90-224 8858',
    'Fax': '90-224 8858'
}, {
    'Id': 'WOLZA',
    'CompanyName': 'Wolski  Zajazd',
    'ContactName': 'Zbyszek Piestrzeniewicz',
    'ContactTitle': 'Owner',
    'Address': 'ul. Filtrowa 68',
    'City': 'Warszawa',
    'PostalCode': '01-012',
    'Country': 'Poland',
    'Phone': '(26) 642-7012',
    'Fax': '(26) 642-7012'
}];

You can use the ngFor Angular directive to dynamically generate column declarations.

import { Component } from '@angular/core';
import { sampleProducts } from './products';

interface ColumnSetting {
  field: string;
  title: string;
  format?: string;
  type: 'text' | 'numeric' | 'boolean' | 'date';
}

@Component({
  selector: 'my-app',
  template: `
      <kendo-grid
        [kendoGridBinding]="gridData"
        [filterable]="true"
        scrollable="none"
        >
        <kendo-grid-column
          *ngFor="let column of columns"
          field="{{column.field}}"
          title="{{column.title}}"
          format="{{column.format}}"
          filter="{{column.type}}"
        ></kendo-grid-column>
      </kendo-grid>
  `
})
export class AppComponent {
  public gridData: any[] = sampleProducts;

  public columns: ColumnSetting[] = [
    {
      field: 'ProductName',
      title: 'Product Name',
      type: 'text'
    }, {
      field: 'UnitPrice',
      format: '{0:c}',
      title: 'Unit Price',
      type: 'numeric'
    }, {
      field: 'FirstOrderedOn',
      format: '{0:d}',
      title: 'First Ordered',
      type: 'date'
    }
  ];
}
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { FormsModule } from '@angular/forms';
import { GridModule } from '@progress/kendo-angular-grid';

import { AppComponent } from './app.component';

@NgModule({
  imports: [ BrowserModule, BrowserAnimationsModule, FormsModule, GridModule ],
  declarations: [ AppComponent ],
  bootstrap: [ AppComponent ]
})

export class AppModule { }
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './ng.module';

enableProdMode();

const platform = platformBrowserDynamic();
platform.bootstrapModule(AppModule);
export const sampleProducts = [
    {
        "ProductID": 1,
        "ProductName": "Chai",
        "SupplierID": 1,
        "CategoryID": 1,
        "QuantityPerUnit": "10 boxes x 20 bags",
        "UnitPrice": 18,
        "UnitsInStock": 39,
        "UnitsOnOrder": 0,
        "ReorderLevel": 10,
        "Discontinued": false,
        "Category": {
            "CategoryID": 1,
            "CategoryName": "Beverages",
            "Description": "Soft drinks, coffees, teas, beers, and ales"
        },
        "FirstOrderedOn": new Date(1996, 8, 20)
    },
    {
        "ProductID": 2,
        "ProductName": "Chang",
        "SupplierID": 1,
        "CategoryID": 1,
        "QuantityPerUnit": "24 - 12 oz bottles",
        "UnitPrice": 19,
        "UnitsInStock": 17,
        "UnitsOnOrder": 40,
        "ReorderLevel": 25,
        "Discontinued": false,
        "Category": {
            "CategoryID": 1,
            "CategoryName": "Beverages",
            "Description": "Soft drinks, coffees, teas, beers, and ales"
        },
        "FirstOrderedOn": new Date(1996, 7, 12)
    },
    {
        "ProductID": 3,
        "ProductName": "Aniseed Syrup",
        "SupplierID": 1,
        "CategoryID": 2,
        "QuantityPerUnit": "12 - 550 ml bottles",
        "UnitPrice": 10,
        "UnitsInStock": 13,
        "UnitsOnOrder": 70,
        "ReorderLevel": 25,
        "Discontinued": false,
        "Category": {
            "CategoryID": 2,
            "CategoryName": "Condiments",
            "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
        },
        "FirstOrderedOn": new Date(1996, 8, 26)
    },
    {
        "ProductID": 4,
        "ProductName": "Chef Anton's Cajun Seasoning",
        "SupplierID": 2,
        "CategoryID": 2,
        "QuantityPerUnit": "48 - 6 oz jars",
        "UnitPrice": 22,
        "UnitsInStock": 53,
        "UnitsOnOrder": 0,
        "ReorderLevel": 0,
        "Discontinued": false,
        "Category": {
            "CategoryID": 2,
            "CategoryName": "Condiments",
            "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
        },
        "FirstOrderedOn": new Date(1996, 9, 19)
    },
    {
        "ProductID": 5,
        "ProductName": "Chef Anton's Gumbo Mix",
        "SupplierID": 2,
        "CategoryID": 2,
        "QuantityPerUnit": "36 boxes",
        "UnitPrice": 21.35,
        "UnitsInStock": 0,
        "UnitsOnOrder": 0,
        "ReorderLevel": 0,
        "Discontinued": true,
        "Category": {
            "CategoryID": 2,
            "CategoryName": "Condiments",
            "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
        },
        "FirstOrderedOn": new Date(1996, 7, 17)
    },
    {
        "ProductID": 6,
        "ProductName": "Grandma's Boysenberry Spread",
        "SupplierID": 3,
        "CategoryID": 2,
        "QuantityPerUnit": "12 - 8 oz jars",
        "UnitPrice": 25,
        "UnitsInStock": 120,
        "UnitsOnOrder": 0,
        "ReorderLevel": 25,
        "Discontinued": false,
        "Category": {
            "CategoryID": 2,
            "CategoryName": "Condiments",
            "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
        },
        "FirstOrderedOn": new Date(1996, 9, 19)
    },
    {
        "ProductID": 7,
        "ProductName": "Uncle Bob's Organic Dried Pears",
        "SupplierID": 3,
        "CategoryID": 7,
        "QuantityPerUnit": "12 - 1 lb pkgs.",
        "UnitPrice": 30,
        "UnitsInStock": 15,
        "UnitsOnOrder": 0,
        "ReorderLevel": 10,
        "Discontinued": false,
        "Category": {
            "CategoryID": 7,
            "CategoryName": "Produce",
            "Description": "Dried fruit and bean curd"
        },
        "FirstOrderedOn": new Date(1996, 7, 22)
    },
    {
        "ProductID": 8,
        "ProductName": "Northwoods Cranberry Sauce",
        "SupplierID": 3,
        "CategoryID": 2,
        "QuantityPerUnit": "12 - 12 oz jars",
        "UnitPrice": 40,
        "UnitsInStock": 6,
        "UnitsOnOrder": 0,
        "ReorderLevel": 0,
        "Discontinued": false,
        "Category": {
            "CategoryID": 2,
            "CategoryName": "Condiments",
            "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
        },
        "FirstOrderedOn": new Date(1996, 11, 1)
    },
    {
        "ProductID": 9,
        "ProductName": "Mishi Kobe Niku",
        "SupplierID": 4,
        "CategoryID": 6,
        "QuantityPerUnit": "18 - 500 g pkgs.",
        "UnitPrice": 97,
        "UnitsInStock": 29,
        "UnitsOnOrder": 0,
        "ReorderLevel": 0,
        "Discontinued": true,
        "Category": {
            "CategoryID": 6,
            "CategoryName": "Meat/Poultry",
            "Description": "Prepared meats"
        },
        "FirstOrderedOn": new Date(1997, 1, 21)
    },
    {
        "ProductID": 10,
        "ProductName": "Ikura",
        "SupplierID": 4,
        "CategoryID": 8,
        "QuantityPerUnit": "12 - 200 ml jars",
        "UnitPrice": 31,
        "UnitsInStock": 31,
        "UnitsOnOrder": 0,
        "ReorderLevel": 0,
        "Discontinued": false,
        "Category": {
            "CategoryID": 8,
            "CategoryName": "Seafood",
            "Description": "Seaweed and fish"
        },
        "FirstOrderedOn": new Date(1996, 8, 5)
    }
];

export const products = [{
    "ProductID": 1,
    "ProductName": "Chai",
    "SupplierID": 1,
    "CategoryID": 1,
    "QuantityPerUnit": "10 boxes x 20 bags",
    "UnitPrice": 18.0000,
    "UnitsInStock": 39,
    "UnitsOnOrder": 0,
    "ReorderLevel": 10,
    "Discontinued": false,
    "Category": {
        "CategoryID": 1,
        "CategoryName": "Beverages",
        "Description": "Soft drinks, coffees, teas, beers, and ales"
    }
}, {
    "ProductID": 2,
    "ProductName": "Chang",
    "SupplierID": 1,
    "CategoryID": 1,
    "QuantityPerUnit": "24 - 12 oz bottles",
    "UnitPrice": 19.0000,
    "UnitsInStock": 17,
    "UnitsOnOrder": 40,
    "ReorderLevel": 25,
    "Discontinued": false,
    "Category": {
        "CategoryID": 1,
        "CategoryName": "Beverages",
        "Description": "Soft drinks, coffees, teas, beers, and ales"
    }
}, {
    "ProductID": 3,
    "ProductName": "Aniseed Syrup",
    "SupplierID": 1,
    "CategoryID": 2,
    "QuantityPerUnit": "12 - 550 ml bottles",
    "UnitPrice": 10.0000,
    "UnitsInStock": 13,
    "UnitsOnOrder": 70,
    "ReorderLevel": 25,
    "Discontinued": false,
    "Category": {
        "CategoryID": 2,
        "CategoryName": "Condiments",
        "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
    }
}, {
    "ProductID": 4,
    "ProductName": "Chef Anton's Cajun Seasoning",
    "SupplierID": 2,
    "CategoryID": 2,
    "QuantityPerUnit": "48 - 6 oz jars",
    "UnitPrice": 22.0000,
    "UnitsInStock": 53,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": false,
    "Category": {
        "CategoryID": 2,
        "CategoryName": "Condiments",
        "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
    }
}, {
    "ProductID": 5,
    "ProductName": "Chef Anton's Gumbo Mix",
    "SupplierID": 2,
    "CategoryID": 2,
    "QuantityPerUnit": "36 boxes",
    "UnitPrice": 21.3500,
    "UnitsInStock": 0,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": true,
    "Category": {
        "CategoryID": 2,
        "CategoryName": "Condiments",
        "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
    }
}, {
    "ProductID": 6,
    "ProductName": "Grandma's Boysenberry Spread",
    "SupplierID": 3,
    "CategoryID": 2,
    "QuantityPerUnit": "12 - 8 oz jars",
    "UnitPrice": 25.0000,
    "UnitsInStock": 120,
    "UnitsOnOrder": 0,
    "ReorderLevel": 25,
    "Discontinued": false,
    "Category": {
        "CategoryID": 2,
        "CategoryName": "Condiments",
        "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
    }
}, {
    "ProductID": 7,
    "ProductName": "Uncle Bob's Organic Dried Pears",
    "SupplierID": 3,
    "CategoryID": 7,
    "QuantityPerUnit": "12 - 1 lb pkgs.",
    "UnitPrice": 30.0000,
    "UnitsInStock": 15,
    "UnitsOnOrder": 0,
    "ReorderLevel": 10,
    "Discontinued": false,
    "Category": {
        "CategoryID": 7,
        "CategoryName": "Produce",
        "Description": "Dried fruit and bean curd"
    }
}, {
    "ProductID": 8,
    "ProductName": "Northwoods Cranberry Sauce",
    "SupplierID": 3,
    "CategoryID": 2,
    "QuantityPerUnit": "12 - 12 oz jars",
    "UnitPrice": 40.0000,
    "UnitsInStock": 6,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": false,
    "Category": {
        "CategoryID": 2,
        "CategoryName": "Condiments",
        "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
    }
}, {
    "ProductID": 9,
    "ProductName": "Mishi Kobe Niku",
    "SupplierID": 4,
    "CategoryID": 6,
    "QuantityPerUnit": "18 - 500 g pkgs.",
    "UnitPrice": 97.0000,
    "UnitsInStock": 29,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": true,
    "Category": {
        "CategoryID": 6,
        "CategoryName": "Meat/Poultry",
        "Description": "Prepared meats"
    }
}, {
    "ProductID": 10,
    "ProductName": "Ikura",
    "SupplierID": 4,
    "CategoryID": 8,
    "QuantityPerUnit": "12 - 200 ml jars",
    "UnitPrice": 31.0000,
    "UnitsInStock": 31,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": false,
    "Category": {
        "CategoryID": 8,
        "CategoryName": "Seafood",
        "Description": "Seaweed and fish"
    }
}, {
    "ProductID": 11,
    "ProductName": "Queso Cabrales",
    "SupplierID": 5,
    "CategoryID": 4,
    "QuantityPerUnit": "1 kg pkg.",
    "UnitPrice": 21.0000,
    "UnitsInStock": 22,
    "UnitsOnOrder": 30,
    "ReorderLevel": 30,
    "Discontinued": false,
    "Category": {
        "CategoryID": 4,
        "CategoryName": "Dairy Products",
        "Description": "Cheeses"
    }
}, {
    "ProductID": 12,
    "ProductName": "Queso Manchego La Pastora",
    "SupplierID": 5,
    "CategoryID": 4,
    "QuantityPerUnit": "10 - 500 g pkgs.",
    "UnitPrice": 38.0000,
    "UnitsInStock": 86,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": false,
    "Category": {
        "CategoryID": 4,
        "CategoryName": "Dairy Products",
        "Description": "Cheeses"
    }
}, {
    "ProductID": 13,
    "ProductName": "Konbu",
    "SupplierID": 6,
    "CategoryID": 8,
    "QuantityPerUnit": "2 kg box",
    "UnitPrice": 6.0000,
    "UnitsInStock": 24,
    "UnitsOnOrder": 0,
    "ReorderLevel": 5,
    "Discontinued": false,
    "Category": {
        "CategoryID": 8,
        "CategoryName": "Seafood",
        "Description": "Seaweed and fish"
    }
}, {
    "ProductID": 14,
    "ProductName": "Tofu",
    "SupplierID": 6,
    "CategoryID": 7,
    "QuantityPerUnit": "40 - 100 g pkgs.",
    "UnitPrice": 23.2500,
    "UnitsInStock": 35,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": false,
    "Category": {
        "CategoryID": 7,
        "CategoryName": "Produce",
        "Description": "Dried fruit and bean curd"
    }
}, {
    "ProductID": 15,
    "ProductName": "Genen Shouyu",
    "SupplierID": 6,
    "CategoryID": 2,
    "QuantityPerUnit": "24 - 250 ml bottles",
    "UnitPrice": 15.5000,
    "UnitsInStock": 39,
    "UnitsOnOrder": 0,
    "ReorderLevel": 5,
    "Discontinued": false,
    "Category": {
        "CategoryID": 2,
        "CategoryName": "Condiments",
        "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
    }
}, {
    "ProductID": 16,
    "ProductName": "Pavlova",
    "SupplierID": 7,
    "CategoryID": 3,
    "QuantityPerUnit": "32 - 500 g boxes",
    "UnitPrice": 17.4500,
    "UnitsInStock": 29,
    "UnitsOnOrder": 0,
    "ReorderLevel": 10,
    "Discontinued": false,
    "Category": {
        "CategoryID": 3,
        "CategoryName": "Confections",
        "Description": "Desserts, candies, and sweet breads"
    }
}, {
    "ProductID": 17,
    "ProductName": "Alice Mutton",
    "SupplierID": 7,
    "CategoryID": 6,
    "QuantityPerUnit": "20 - 1 kg tins",
    "UnitPrice": 39.0000,
    "UnitsInStock": 0,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": true,
    "Category": {
        "CategoryID": 6,
        "CategoryName": "Meat/Poultry",
        "Description": "Prepared meats"
    }
}, {
    "ProductID": 18,
    "ProductName": "Carnarvon Tigers",
    "SupplierID": 7,
    "CategoryID": 8,
    "QuantityPerUnit": "16 kg pkg.",
    "UnitPrice": 62.5000,
    "UnitsInStock": 42,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": false,
    "Category": {
        "CategoryID": 8,
        "CategoryName": "Seafood",
        "Description": "Seaweed and fish"
    }
}, {
    "ProductID": 19,
    "ProductName": "Teatime Chocolate Biscuits",
    "SupplierID": 8,
    "CategoryID": 3,
    "QuantityPerUnit": "10 boxes x 12 pieces",
    "UnitPrice": 9.2000,
    "UnitsInStock": 25,
    "UnitsOnOrder": 0,
    "ReorderLevel": 5,
    "Discontinued": false,
    "Category": {
        "CategoryID": 3,
        "CategoryName": "Confections",
        "Description": "Desserts, candies, and sweet breads"
    }
}, {
    "ProductID": 20,
    "ProductName": "Sir Rodney's Marmalade",
    "SupplierID": 8,
    "CategoryID": 3,
    "QuantityPerUnit": "30 gift boxes",
    "UnitPrice": 81.0000,
    "UnitsInStock": 40,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": false,
    "Category": {
        "CategoryID": 3,
        "CategoryName": "Confections",
        "Description": "Desserts, candies, and sweet breads"
    }
}, {
    "ProductID": 21,
    "ProductName": "Sir Rodney's Scones",
    "SupplierID": 8,
    "CategoryID": 3,
    "QuantityPerUnit": "24 pkgs. x 4 pieces",
    "UnitPrice": 10.0000,
    "UnitsInStock": 3,
    "UnitsOnOrder": 40,
    "ReorderLevel": 5,
    "Discontinued": false,
    "Category": {
        "CategoryID": 3,
        "CategoryName": "Confections",
        "Description": "Desserts, candies, and sweet breads"
    }
}, {
    "ProductID": 22,
    "ProductName": "Gustaf's Knäckebröd",
    "SupplierID": 9,
    "CategoryID": 5,
    "QuantityPerUnit": "24 - 500 g pkgs.",
    "UnitPrice": 21.0000,
    "UnitsInStock": 104,
    "UnitsOnOrder": 0,
    "ReorderLevel": 25,
    "Discontinued": false,
    "Category": {
        "CategoryID": 5,
        "CategoryName": "Grains/Cereals",
        "Description": "Breads, crackers, pasta, and cereal"
    }
}, {
    "ProductID": 23,
    "ProductName": "Tunnbröd",
    "SupplierID": 9,
    "CategoryID": 5,
    "QuantityPerUnit": "12 - 250 g pkgs.",
    "UnitPrice": 9.0000,
    "UnitsInStock": 61,
    "UnitsOnOrder": 0,
    "ReorderLevel": 25,
    "Discontinued": false,
    "Category": {
        "CategoryID": 5,
        "CategoryName": "Grains/Cereals",
        "Description": "Breads, crackers, pasta, and cereal"
    }
}, {
    "ProductID": 24,
    "ProductName": "Guaraná Fantástica",
    "SupplierID": 10,
    "CategoryID": 1,
    "QuantityPerUnit": "12 - 355 ml cans",
    "UnitPrice": 4.5000,
    "UnitsInStock": 20,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": true,
    "Category": {
        "CategoryID": 1,
        "CategoryName": "Beverages",
        "Description": "Soft drinks, coffees, teas, beers, and ales"
    }
}, {
    "ProductID": 25,
    "ProductName": "NuNuCa Nuß-Nougat-Creme",
    "SupplierID": 11,
    "CategoryID": 3,
    "QuantityPerUnit": "20 - 450 g glasses",
    "UnitPrice": 14.0000,
    "UnitsInStock": 76,
    "UnitsOnOrder": 0,
    "ReorderLevel": 30,
    "Discontinued": false,
    "Category": {
        "CategoryID": 3,
        "CategoryName": "Confections",
        "Description": "Desserts, candies, and sweet breads"
    }
}, {
    "ProductID": 26,
    "ProductName": "Gumbär Gummibärchen",
    "SupplierID": 11,
    "CategoryID": 3,
    "QuantityPerUnit": "100 - 250 g bags",
    "UnitPrice": 31.2300,
    "UnitsInStock": 15,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": false,
    "Category": {
        "CategoryID": 3,
        "CategoryName": "Confections",
        "Description": "Desserts, candies, and sweet breads"
    }
}, {
    "ProductID": 27,
    "ProductName": "Schoggi Schokolade",
    "SupplierID": 11,
    "CategoryID": 3,
    "QuantityPerUnit": "100 - 100 g pieces",
    "UnitPrice": 43.9000,
    "UnitsInStock": 49,
    "UnitsOnOrder": 0,
    "ReorderLevel": 30,
    "Discontinued": false,
    "Category": {
        "CategoryID": 3,
        "CategoryName": "Confections",
        "Description": "Desserts, candies, and sweet breads"
    }
}, {
    "ProductID": 28,
    "ProductName": "Rössle Sauerkraut",
    "SupplierID": 12,
    "CategoryID": 7,
    "QuantityPerUnit": "25 - 825 g cans",
    "UnitPrice": 45.6000,
    "UnitsInStock": 26,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": true,
    "Category": {
        "CategoryID": 7,
        "CategoryName": "Produce",
        "Description": "Dried fruit and bean curd"
    }
}, {
    "ProductID": 29,
    "ProductName": "Thüringer Rostbratwurst",
    "SupplierID": 12,
    "CategoryID": 6,
    "QuantityPerUnit": "50 bags x 30 sausgs.",
    "UnitPrice": 123.7900,
    "UnitsInStock": 0,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": true,
    "Category": {
        "CategoryID": 6,
        "CategoryName": "Meat/Poultry",
        "Description": "Prepared meats"
    }
}, {
    "ProductID": 30,
    "ProductName": "Nord-Ost Matjeshering",
    "SupplierID": 13,
    "CategoryID": 8,
    "QuantityPerUnit": "10 - 200 g glasses",
    "UnitPrice": 25.8900,
    "UnitsInStock": 10,
    "UnitsOnOrder": 0,
    "ReorderLevel": 15,
    "Discontinued": false,
    "Category": {
        "CategoryID": 8,
        "CategoryName": "Seafood",
        "Description": "Seaweed and fish"
    }
}, {
    "ProductID": 31,
    "ProductName": "Gorgonzola Telino",
    "SupplierID": 14,
    "CategoryID": 4,
    "QuantityPerUnit": "12 - 100 g pkgs",
    "UnitPrice": 12.5000,
    "UnitsInStock": 0,
    "UnitsOnOrder": 70,
    "ReorderLevel": 20,
    "Discontinued": false,
    "Category": {
        "CategoryID": 4,
        "CategoryName": "Dairy Products",
        "Description": "Cheeses"
    }
}, {
    "ProductID": 32,
    "ProductName": "Mascarpone Fabioli",
    "SupplierID": 14,
    "CategoryID": 4,
    "QuantityPerUnit": "24 - 200 g pkgs.",
    "UnitPrice": 32.0000,
    "UnitsInStock": 9,
    "UnitsOnOrder": 40,
    "ReorderLevel": 25,
    "Discontinued": false,
    "Category": {
        "CategoryID": 4,
        "CategoryName": "Dairy Products",
        "Description": "Cheeses"
    }
}, {
    "ProductID": 33,
    "ProductName": "Geitost",
    "SupplierID": 15,
    "CategoryID": 4,
    "QuantityPerUnit": "500 g",
    "UnitPrice": 2.5000,
    "UnitsInStock": 112,
    "UnitsOnOrder": 0,
    "ReorderLevel": 20,
    "Discontinued": false,
    "Category": {
        "CategoryID": 4,
        "CategoryName": "Dairy Products",
        "Description": "Cheeses"
    }
}, {
    "ProductID": 34,
    "ProductName": "Sasquatch Ale",
    "SupplierID": 16,
    "CategoryID": 1,
    "QuantityPerUnit": "24 - 12 oz bottles",
    "UnitPrice": 14.0000,
    "UnitsInStock": 111,
    "UnitsOnOrder": 0,
    "ReorderLevel": 15,
    "Discontinued": false,
    "Category": {
        "CategoryID": 1,
        "CategoryName": "Beverages",
        "Description": "Soft drinks, coffees, teas, beers, and ales"
    }
}, {
    "ProductID": 35,
    "ProductName": "Steeleye Stout",
    "SupplierID": 16,
    "CategoryID": 1,
    "QuantityPerUnit": "24 - 12 oz bottles",
    "UnitPrice": 18.0000,
    "UnitsInStock": 20,
    "UnitsOnOrder": 0,
    "ReorderLevel": 15,
    "Discontinued": false,
    "Category": {
        "CategoryID": 1,
        "CategoryName": "Beverages",
        "Description": "Soft drinks, coffees, teas, beers, and ales"
    }
}, {
    "ProductID": 36,
    "ProductName": "Inlagd Sill",
    "SupplierID": 17,
    "CategoryID": 8,
    "QuantityPerUnit": "24 - 250 g  jars",
    "UnitPrice": 19.0000,
    "UnitsInStock": 112,
    "UnitsOnOrder": 0,
    "ReorderLevel": 20,
    "Discontinued": false,
    "Category": {
        "CategoryID": 8,
        "CategoryName": "Seafood",
        "Description": "Seaweed and fish"
    }
}, {
    "ProductID": 37,
    "ProductName": "Gravad lax",
    "SupplierID": 17,
    "CategoryID": 8,
    "QuantityPerUnit": "12 - 500 g pkgs.",
    "UnitPrice": 26.0000,
    "UnitsInStock": 11,
    "UnitsOnOrder": 50,
    "ReorderLevel": 25,
    "Discontinued": false,
    "Category": {
        "CategoryID": 8,
        "CategoryName": "Seafood",
        "Description": "Seaweed and fish"
    }
}, {
    "ProductID": 38,
    "ProductName": "Côte de Blaye",
    "SupplierID": 18,
    "CategoryID": 1,
    "QuantityPerUnit": "12 - 75 cl bottles",
    "UnitPrice": 263.5000,
    "UnitsInStock": 17,
    "UnitsOnOrder": 0,
    "ReorderLevel": 15,
    "Discontinued": false,
    "Category": {
        "CategoryID": 1,
        "CategoryName": "Beverages",
        "Description": "Soft drinks, coffees, teas, beers, and ales"
    }
}, {
    "ProductID": 39,
    "ProductName": "Chartreuse verte",
    "SupplierID": 18,
    "CategoryID": 1,
    "QuantityPerUnit": "750 cc per bottle",
    "UnitPrice": 18.0000,
    "UnitsInStock": 69,
    "UnitsOnOrder": 0,
    "ReorderLevel": 5,
    "Discontinued": false,
    "Category": {
        "CategoryID": 1,
        "CategoryName": "Beverages",
        "Description": "Soft drinks, coffees, teas, beers, and ales"
    }
}, {
    "ProductID": 40,
    "ProductName": "Boston Crab Meat",
    "SupplierID": 19,
    "CategoryID": 8,
    "QuantityPerUnit": "24 - 4 oz tins",
    "UnitPrice": 18.4000,
    "UnitsInStock": 123,
    "UnitsOnOrder": 0,
    "ReorderLevel": 30,
    "Discontinued": false,
    "Category": {
        "CategoryID": 8,
        "CategoryName": "Seafood",
        "Description": "Seaweed and fish"
    }
}, {
    "ProductID": 41,
    "ProductName": "Jack's New England Clam Chowder",
    "SupplierID": 19,
    "CategoryID": 8,
    "QuantityPerUnit": "12 - 12 oz cans",
    "UnitPrice": 9.6500,
    "UnitsInStock": 85,
    "UnitsOnOrder": 0,
    "ReorderLevel": 10,
    "Discontinued": false,
    "Category": {
        "CategoryID": 8,
        "CategoryName": "Seafood",
        "Description": "Seaweed and fish"
    }
}, {
    "ProductID": 42,
    "ProductName": "Singaporean Hokkien Fried Mee",
    "SupplierID": 20,
    "CategoryID": 5,
    "QuantityPerUnit": "32 - 1 kg pkgs.",
    "UnitPrice": 14.0000,
    "UnitsInStock": 26,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": true,
    "Category": {
        "CategoryID": 5,
        "CategoryName": "Grains/Cereals",
        "Description": "Breads, crackers, pasta, and cereal"
    }
}, {
    "ProductID": 43,
    "ProductName": "Ipoh Coffee",
    "SupplierID": 20,
    "CategoryID": 1,
    "QuantityPerUnit": "16 - 500 g tins",
    "UnitPrice": 46.0000,
    "UnitsInStock": 17,
    "UnitsOnOrder": 10,
    "ReorderLevel": 25,
    "Discontinued": false,
    "Category": {
        "CategoryID": 1,
        "CategoryName": "Beverages",
        "Description": "Soft drinks, coffees, teas, beers, and ales"
    }
}, {
    "ProductID": 44,
    "ProductName": "Gula Malacca",
    "SupplierID": 20,
    "CategoryID": 2,
    "QuantityPerUnit": "20 - 2 kg bags",
    "UnitPrice": 19.4500,
    "UnitsInStock": 27,
    "UnitsOnOrder": 0,
    "ReorderLevel": 15,
    "Discontinued": false,
    "Category": {
        "CategoryID": 2,
        "CategoryName": "Condiments",
        "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
    }
}, {
    "ProductID": 45,
    "ProductName": "Rogede sild",
    "SupplierID": 21,
    "CategoryID": 8,
    "QuantityPerUnit": "1k pkg.",
    "UnitPrice": 9.5000,
    "UnitsInStock": 5,
    "UnitsOnOrder": 70,
    "ReorderLevel": 15,
    "Discontinued": false,
    "Category": {
        "CategoryID": 8,
        "CategoryName": "Seafood",
        "Description": "Seaweed and fish"
    }
}, {
    "ProductID": 46,
    "ProductName": "Spegesild",
    "SupplierID": 21,
    "CategoryID": 8,
    "QuantityPerUnit": "4 - 450 g glasses",
    "UnitPrice": 12.0000,
    "UnitsInStock": 95,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": false,
    "Category": {
        "CategoryID": 8,
        "CategoryName": "Seafood",
        "Description": "Seaweed and fish"
    }
}, {
    "ProductID": 47,
    "ProductName": "Zaanse koeken",
    "SupplierID": 22,
    "CategoryID": 3,
    "QuantityPerUnit": "10 - 4 oz boxes",
    "UnitPrice": 9.5000,
    "UnitsInStock": 36,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": false,
    "Category": {
        "CategoryID": 3,
        "CategoryName": "Confections",
        "Description": "Desserts, candies, and sweet breads"
    }
}, {
    "ProductID": 48,
    "ProductName": "Chocolade",
    "SupplierID": 22,
    "CategoryID": 3,
    "QuantityPerUnit": "10 pkgs.",
    "UnitPrice": 12.7500,
    "UnitsInStock": 15,
    "UnitsOnOrder": 70,
    "ReorderLevel": 25,
    "Discontinued": false,
    "Category": {
        "CategoryID": 3,
        "CategoryName": "Confections",
        "Description": "Desserts, candies, and sweet breads"
    }
}, {
    "ProductID": 49,
    "ProductName": "Maxilaku",
    "SupplierID": 23,
    "CategoryID": 3,
    "QuantityPerUnit": "24 - 50 g pkgs.",
    "UnitPrice": 20.0000,
    "UnitsInStock": 10,
    "UnitsOnOrder": 60,
    "ReorderLevel": 15,
    "Discontinued": false,
    "Category": {
        "CategoryID": 3,
        "CategoryName": "Confections",
        "Description": "Desserts, candies, and sweet breads"
    }
}, {
    "ProductID": 50,
    "ProductName": "Valkoinen suklaa",
    "SupplierID": 23,
    "CategoryID": 3,
    "QuantityPerUnit": "12 - 100 g bars",
    "UnitPrice": 16.2500,
    "UnitsInStock": 65,
    "UnitsOnOrder": 0,
    "ReorderLevel": 30,
    "Discontinued": false,
    "Category": {
        "CategoryID": 3,
        "CategoryName": "Confections",
        "Description": "Desserts, candies, and sweet breads"
    }
}, {
    "ProductID": 51,
    "ProductName": "Manjimup Dried Apples",
    "SupplierID": 24,
    "CategoryID": 7,
    "QuantityPerUnit": "50 - 300 g pkgs.",
    "UnitPrice": 53.0000,
    "UnitsInStock": 20,
    "UnitsOnOrder": 0,
    "ReorderLevel": 10,
    "Discontinued": false,
    "Category": {
        "CategoryID": 7,
        "CategoryName": "Produce",
        "Description": "Dried fruit and bean curd"
    }
}, {
    "ProductID": 52,
    "ProductName": "Filo Mix",
    "SupplierID": 24,
    "CategoryID": 5,
    "QuantityPerUnit": "16 - 2 kg boxes",
    "UnitPrice": 7.0000,
    "UnitsInStock": 38,
    "UnitsOnOrder": 0,
    "ReorderLevel": 25,
    "Discontinued": false,
    "Category": {
        "CategoryID": 5,
        "CategoryName": "Grains/Cereals",
        "Description": "Breads, crackers, pasta, and cereal"
    }
}, {
    "ProductID": 53,
    "ProductName": "Perth Pasties",
    "SupplierID": 24,
    "CategoryID": 6,
    "QuantityPerUnit": "48 pieces",
    "UnitPrice": 32.8000,
    "UnitsInStock": 0,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": true,
    "Category": {
        "CategoryID": 6,
        "CategoryName": "Meat/Poultry",
        "Description": "Prepared meats"
    }
}, {
    "ProductID": 54,
    "ProductName": "Tourtière",
    "SupplierID": 25,
    "CategoryID": 6,
    "QuantityPerUnit": "16 pies",
    "UnitPrice": 7.4500,
    "UnitsInStock": 21,
    "UnitsOnOrder": 0,
    "ReorderLevel": 10,
    "Discontinued": false,
    "Category": {
        "CategoryID": 6,
        "CategoryName": "Meat/Poultry",
        "Description": "Prepared meats"
    }
}, {
    "ProductID": 55,
    "ProductName": "Pâté chinois",
    "SupplierID": 25,
    "CategoryID": 6,
    "QuantityPerUnit": "24 boxes x 2 pies",
    "UnitPrice": 24.0000,
    "UnitsInStock": 115,
    "UnitsOnOrder": 0,
    "ReorderLevel": 20,
    "Discontinued": false,
    "Category": {
        "CategoryID": 6,
        "CategoryName": "Meat/Poultry",
        "Description": "Prepared meats"
    }
}, {
    "ProductID": 56,
    "ProductName": "Gnocchi di nonna Alice",
    "SupplierID": 26,
    "CategoryID": 5,
    "QuantityPerUnit": "24 - 250 g pkgs.",
    "UnitPrice": 38.0000,
    "UnitsInStock": 21,
    "UnitsOnOrder": 10,
    "ReorderLevel": 30,
    "Discontinued": false,
    "Category": {
        "CategoryID": 5,
        "CategoryName": "Grains/Cereals",
        "Description": "Breads, crackers, pasta, and cereal"
    }
}, {
    "ProductID": 57,
    "ProductName": "Ravioli Angelo",
    "SupplierID": 26,
    "CategoryID": 5,
    "QuantityPerUnit": "24 - 250 g pkgs.",
    "UnitPrice": 19.5000,
    "UnitsInStock": 36,
    "UnitsOnOrder": 0,
    "ReorderLevel": 20,
    "Discontinued": false,
    "Category": {
        "CategoryID": 5,
        "CategoryName": "Grains/Cereals",
        "Description": "Breads, crackers, pasta, and cereal"
    }
}, {
    "ProductID": 58,
    "ProductName": "Escargots de Bourgogne",
    "SupplierID": 27,
    "CategoryID": 8,
    "QuantityPerUnit": "24 pieces",
    "UnitPrice": 13.2500,
    "UnitsInStock": 62,
    "UnitsOnOrder": 0,
    "ReorderLevel": 20,
    "Discontinued": false,
    "Category": {
        "CategoryID": 8,
        "CategoryName": "Seafood",
        "Description": "Seaweed and fish"
    }
}, {
    "ProductID": 59,
    "ProductName": "Raclette Courdavault",
    "SupplierID": 28,
    "CategoryID": 4,
    "QuantityPerUnit": "5 kg pkg.",
    "UnitPrice": 55.0000,
    "UnitsInStock": 79,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": false,
    "Category": {
        "CategoryID": 4,
        "CategoryName": "Dairy Products",
        "Description": "Cheeses"
    }
}, {
    "ProductID": 60,
    "ProductName": "Camembert Pierrot",
    "SupplierID": 28,
    "CategoryID": 4,
    "QuantityPerUnit": "15 - 300 g rounds",
    "UnitPrice": 34.0000,
    "UnitsInStock": 19,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": false,
    "Category": {
        "CategoryID": 4,
        "CategoryName": "Dairy Products",
        "Description": "Cheeses"
    }
}, {
    "ProductID": 61,
    "ProductName": "Sirop d'érable",
    "SupplierID": 29,
    "CategoryID": 2,
    "QuantityPerUnit": "24 - 500 ml bottles",
    "UnitPrice": 28.5000,
    "UnitsInStock": 113,
    "UnitsOnOrder": 0,
    "ReorderLevel": 25,
    "Discontinued": false,
    "Category": {
        "CategoryID": 2,
        "CategoryName": "Condiments",
        "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
    }
}, {
    "ProductID": 62,
    "ProductName": "Tarte au sucre",
    "SupplierID": 29,
    "CategoryID": 3,
    "QuantityPerUnit": "48 pies",
    "UnitPrice": 49.3000,
    "UnitsInStock": 17,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": false,
    "Category": {
        "CategoryID": 3,
        "CategoryName": "Confections",
        "Description": "Desserts, candies, and sweet breads"
    }
}, {
    "ProductID": 63,
    "ProductName": "Vegie-spread",
    "SupplierID": 7,
    "CategoryID": 2,
    "QuantityPerUnit": "15 - 625 g jars",
    "UnitPrice": 43.9000,
    "UnitsInStock": 24,
    "UnitsOnOrder": 0,
    "ReorderLevel": 5,
    "Discontinued": false,
    "Category": {
        "CategoryID": 2,
        "CategoryName": "Condiments",
        "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
    }
}, {
    "ProductID": 64,
    "ProductName": "Wimmers gute Semmelknödel",
    "SupplierID": 12,
    "CategoryID": 5,
    "QuantityPerUnit": "20 bags x 4 pieces",
    "UnitPrice": 33.2500,
    "UnitsInStock": 22,
    "UnitsOnOrder": 80,
    "ReorderLevel": 30,
    "Discontinued": false,
    "Category": {
        "CategoryID": 5,
        "CategoryName": "Grains/Cereals",
        "Description": "Breads, crackers, pasta, and cereal"
    }
}, {
    "ProductID": 65,
    "ProductName": "Louisiana Fiery Hot Pepper Sauce",
    "SupplierID": 2,
    "CategoryID": 2,
    "QuantityPerUnit": "32 - 8 oz bottles",
    "UnitPrice": 21.0500,
    "UnitsInStock": 76,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": false,
    "Category": {
        "CategoryID": 2,
        "CategoryName": "Condiments",
        "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
    }
}, {
    "ProductID": 66,
    "ProductName": "Louisiana Hot Spiced Okra",
    "SupplierID": 2,
    "CategoryID": 2,
    "QuantityPerUnit": "24 - 8 oz jars",
    "UnitPrice": 17.0000,
    "UnitsInStock": 4,
    "UnitsOnOrder": 100,
    "ReorderLevel": 20,
    "Discontinued": false,
    "Category": {
        "CategoryID": 2,
        "CategoryName": "Condiments",
        "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
    }
}, {
    "ProductID": 67,
    "ProductName": "Laughing Lumberjack Lager",
    "SupplierID": 16,
    "CategoryID": 1,
    "QuantityPerUnit": "24 - 12 oz bottles",
    "UnitPrice": 14.0000,
    "UnitsInStock": 52,
    "UnitsOnOrder": 0,
    "ReorderLevel": 10,
    "Discontinued": false,
    "Category": {
        "CategoryID": 1,
        "CategoryName": "Beverages",
        "Description": "Soft drinks, coffees, teas, beers, and ales"
    }
}, {
    "ProductID": 68,
    "ProductName": "Scottish Longbreads",
    "SupplierID": 8,
    "CategoryID": 3,
    "QuantityPerUnit": "10 boxes x 8 pieces",
    "UnitPrice": 12.5000,
    "UnitsInStock": 6,
    "UnitsOnOrder": 10,
    "ReorderLevel": 15,
    "Discontinued": false,
    "Category": {
        "CategoryID": 3,
        "CategoryName": "Confections",
        "Description": "Desserts, candies, and sweet breads"
    }
}, {
    "ProductID": 69,
    "ProductName": "Gudbrandsdalsost",
    "SupplierID": 15,
    "CategoryID": 4,
    "QuantityPerUnit": "10 kg pkg.",
    "UnitPrice": 36.0000,
    "UnitsInStock": 26,
    "UnitsOnOrder": 0,
    "ReorderLevel": 15,
    "Discontinued": false,
    "Category": {
        "CategoryID": 4,
        "CategoryName": "Dairy Products",
        "Description": "Cheeses"
    }
}, {
    "ProductID": 70,
    "ProductName": "Outback Lager",
    "SupplierID": 7,
    "CategoryID": 1,
    "QuantityPerUnit": "24 - 355 ml bottles",
    "UnitPrice": 15.0000,
    "UnitsInStock": 15,
    "UnitsOnOrder": 10,
    "ReorderLevel": 30,
    "Discontinued": false,
    "Category": {
        "CategoryID": 1,
        "CategoryName": "Beverages",
        "Description": "Soft drinks, coffees, teas, beers, and ales"
    }
}, {
    "ProductID": 71,
    "ProductName": "Flotemysost",
    "SupplierID": 15,
    "CategoryID": 4,
    "QuantityPerUnit": "10 - 500 g pkgs.",
    "UnitPrice": 21.5000,
    "UnitsInStock": 26,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": false,
    "Category": {
        "CategoryID": 4,
        "CategoryName": "Dairy Products",
        "Description": "Cheeses"
    }
}, {
    "ProductID": 72,
    "ProductName": "Mozzarella di Giovanni",
    "SupplierID": 14,
    "CategoryID": 4,
    "QuantityPerUnit": "24 - 200 g pkgs.",
    "UnitPrice": 34.8000,
    "UnitsInStock": 14,
    "UnitsOnOrder": 0,
    "ReorderLevel": 0,
    "Discontinued": false,
    "Category": {
        "CategoryID": 4,
        "CategoryName": "Dairy Products",
        "Description": "Cheeses"
    }
}, {
    "ProductID": 73,
    "ProductName": "Röd Kaviar",
    "SupplierID": 17,
    "CategoryID": 8,
    "QuantityPerUnit": "24 - 150 g jars",
    "UnitPrice": 15.0000,
    "UnitsInStock": 101,
    "UnitsOnOrder": 0,
    "ReorderLevel": 5,
    "Discontinued": false,
    "Category": {
        "CategoryID": 8,
        "CategoryName": "Seafood",
        "Description": "Seaweed and fish"
    }
}, {
    "ProductID": 74,
    "ProductName": "Longlife Tofu",
    "SupplierID": 4,
    "CategoryID": 7,
    "QuantityPerUnit": "5 kg pkg.",
    "UnitPrice": 10.0000,
    "UnitsInStock": 4,
    "UnitsOnOrder": 20,
    "ReorderLevel": 5,
    "Discontinued": false,
    "Category": {
        "CategoryID": 7,
        "CategoryName": "Produce",
        "Description": "Dried fruit and bean curd"
    }
}, {
    "ProductID": 75,
    "ProductName": "Rhönbräu Klosterbier",
    "SupplierID": 12,
    "CategoryID": 1,
    "QuantityPerUnit": "24 - 0.5 l bottles",
    "UnitPrice": 7.7500,
    "UnitsInStock": 125,
    "UnitsOnOrder": 0,
    "ReorderLevel": 25,
    "Discontinued": false,
    "Category": {
        "CategoryID": 1,
        "CategoryName": "Beverages",
        "Description": "Soft drinks, coffees, teas, beers, and ales"
    }
}, {
    "ProductID": 76,
    "ProductName": "Lakkalikööri",
    "SupplierID": 23,
    "CategoryID": 1,
    "QuantityPerUnit": "500 ml",
    "UnitPrice": 18.0000,
    "UnitsInStock": 57,
    "UnitsOnOrder": 0,
    "ReorderLevel": 20,
    "Discontinued": false,
    "Category": {
        "CategoryID": 1,
        "CategoryName": "Beverages",
        "Description": "Soft drinks, coffees, teas, beers, and ales"
    }
}, {
    "ProductID": 77,
    "ProductName": "Original Frankfurter grüne Soße",
    "SupplierID": 12,
    "CategoryID": 2,
    "QuantityPerUnit": "12 boxes",
    "UnitPrice": 13.0000,
    "UnitsInStock": 32,
    "UnitsOnOrder": 0,
    "ReorderLevel": 15,
    "Discontinued": false,
    "Category": {
        "CategoryID": 2,
        "CategoryName": "Condiments",
        "Description": "Sweet and savory sauces, relishes, spreads, and seasonings"
    }
}];
In this article