NEW VERSION RELEASED! Webix 11 Read More Core Updates, Extended Functionalities in SpreadSheet and File Manager and more

DataTable – 1000 columns and more

As you may know from the previous article JS Grid with 1 000 000 rows, DataTable is not limited by the number of rows. What about columns?

Col 0
Col 1
Col 2
Col 3
Col 4
Col 5
Col 6
Col 7
Col 8
Col 9
Col 10
Col 11
Col 12
Col 13
Col 14
Col 15
Col 16
Col 17
Col 18
Col 19
Col 20
Col 21
Col 22
Col 23
Col 24
Col 25
Col 26
Col 27
Col 28
Col 29
Col 30
Col 31
Col 32
Col 33
Col 34
Col 35
Col 36
Col 37
Col 38
Col 39
Col 40
Col 41
Col 42
Col 43
Col 44
Col 45
Col 46
Col 47
Col 48
Col 49
Col 50
Col 51
Col 52
Col 53
Col 54
Col 55
Col 56
Col 57
Col 58
Col 59
Col 60
Col 61
Col 62
Col 63
Col 64
Col 65
Col 66
Col 67
Col 68
Col 69
Col 70
Col 71
Col 72
Col 73
Col 74
Col 75
Col 76
Col 77
Col 78
Col 79
Col 80
Col 81
Col 82
Col 83
Col 84
Col 85
Col 86
Col 87
Col 88
Col 89
Col 90
Col 91
Col 92
Col 93
Col 94
Col 95
Col 96
Col 97
Col 98
Col 99
Col 100
Col 101
Col 102
Col 103
Col 104
Col 105
Col 106
Col 107
Col 108
Col 109
Col 110
Col 111
Col 112
Col 113
Col 114
Col 115
Col 116
Col 117
Col 118
Col 119
Col 120
Col 121
Col 122
Col 123
Col 124
Col 125
Col 126
Col 127
Col 128
Col 129
Col 130
Col 131
Col 132
Col 133
Col 134
Col 135
Col 136
Col 137
Col 138
Col 139
Col 140
Col 141
Col 142
Col 143
Col 144
Col 145
Col 146
Col 147
Col 148
Col 149
Col 150
Col 151
Col 152
Col 153
Col 154
Col 155
Col 156
Col 157
Col 158
Col 159
Col 160
Col 161
Col 162
Col 163
Col 164
Col 165
Col 166
Col 167
Col 168
Col 169
Col 170
Col 171
Col 172
Col 173
Col 174
Col 175
Col 176
Col 177
Col 178
Col 179
Col 180
Col 181
Col 182
Col 183
Col 184
Col 185
Col 186
Col 187
Col 188
Col 189
Col 190
Col 191
Col 192
Col 193
Col 194
Col 195
Col 196
Col 197
Col 198
Col 199
Col 200
Col 201
Col 202
Col 203
Col 204
Col 205
Col 206
Col 207
Col 208
Col 209
Col 210
Col 211
Col 212
Col 213
Col 214
Col 215
Col 216
Col 217
Col 218
Col 219
Col 220
Col 221
Col 222
Col 223
Col 224
Col 225
Col 226
Col 227
Col 228
Col 229
Col 230
Col 231
Col 232
Col 233
Col 234
Col 235
Col 236
Col 237
Col 238
Col 239
Col 240
Col 241
Col 242
Col 243
Col 244
Col 245
Col 246
Col 247
Col 248
Col 249
Col 250
Col 251
Col 252
Col 253
Col 254
Col 255
Col 256
Col 257
Col 258
Col 259
Col 260
Col 261
Col 262
Col 263
Col 264
Col 265
Col 266
Col 267
Col 268
Col 269
Col 270
Col 271
Col 272
Col 273
Col 274
Col 275
Col 276
Col 277
Col 278
Col 279
Col 280
Col 281
Col 282
Col 283
Col 284
Col 285
Col 286
Col 287
Col 288
Col 289
Col 290
Col 291
Col 292
Col 293
Col 294
Col 295
Col 296
Col 297
Col 298
Col 299
Col 300
Col 301
Col 302
Col 303
Col 304
Col 305
Col 306
Col 307
Col 308
Col 309
Col 310
Col 311
Col 312
Col 313
Col 314
Col 315
Col 316
Col 317
Col 318
Col 319
Col 320
Col 321
Col 322
Col 323
Col 324
Col 325
Col 326
Col 327
Col 328
Col 329
Col 330
Col 331
Col 332
Col 333
Col 334
Col 335
Col 336
Col 337
Col 338
Col 339
Col 340
Col 341
Col 342
Col 343
Col 344
Col 345
Col 346
Col 347
Col 348
Col 349
Col 350
Col 351
Col 352
Col 353
Col 354
Col 355
Col 356
Col 357
Col 358
Col 359
Col 360
Col 361
Col 362
Col 363
Col 364
Col 365
Col 366
Col 367
Col 368
Col 369
Col 370
Col 371
Col 372
Col 373
Col 374
Col 375
Col 376
Col 377
Col 378
Col 379
Col 380
Col 381
Col 382
Col 383
Col 384
Col 385
Col 386
Col 387
Col 388
Col 389
Col 390
Col 391
Col 392
Col 393
Col 394
Col 395
Col 396
Col 397
Col 398
Col 399
Col 400
Col 401
Col 402
Col 403
Col 404
Col 405
Col 406
Col 407
Col 408
Col 409
Col 410
Col 411
Col 412
Col 413
Col 414
Col 415
Col 416
Col 417
Col 418
Col 419
Col 420
Col 421
Col 422
Col 423
Col 424
Col 425
Col 426
Col 427
Col 428
Col 429
Col 430
Col 431
Col 432
Col 433
Col 434
Col 435
Col 436
Col 437
Col 438
Col 439
Col 440
Col 441
Col 442
Col 443
Col 444
Col 445
Col 446
Col 447
Col 448
Col 449
Col 450
Col 451
Col 452
Col 453
Col 454
Col 455
Col 456
Col 457
Col 458
Col 459
Col 460
Col 461
Col 462
Col 463
Col 464
Col 465
Col 466
Col 467
Col 468
Col 469
Col 470
Col 471
Col 472
Col 473
Col 474
Col 475
Col 476
Col 477
Col 478
Col 479
Col 480
Col 481
Col 482
Col 483
Col 484
Col 485
Col 486
Col 487
Col 488
Col 489
Col 490
Col 491
Col 492
Col 493
Col 494
Col 495
Col 496
Col 497
Col 498
Col 499
Col 500
Col 501
Col 502
Col 503
Col 504
Col 505
Col 506
Col 507
Col 508
Col 509
Col 510
Col 511
Col 512
Col 513
Col 514
Col 515
Col 516
Col 517
Col 518
Col 519
Col 520
Col 521
Col 522
Col 523
Col 524
Col 525
Col 526
Col 527
Col 528
Col 529
Col 530
Col 531
Col 532
Col 533
Col 534
Col 535
Col 536
Col 537
Col 538
Col 539
Col 540
Col 541
Col 542
Col 543
Col 544
Col 545
Col 546
Col 547
Col 548
Col 549
Col 550
Col 551
Col 552
Col 553
Col 554
Col 555
Col 556
Col 557
Col 558
Col 559
Col 560
Col 561
Col 562
Col 563
Col 564
Col 565
Col 566
Col 567
Col 568
Col 569
Col 570
Col 571
Col 572
Col 573
Col 574
Col 575
Col 576
Col 577
Col 578
Col 579
Col 580
Col 581
Col 582
Col 583
Col 584
Col 585
Col 586
Col 587
Col 588
Col 589
Col 590
Col 591
Col 592
Col 593
Col 594
Col 595
Col 596
Col 597
Col 598
Col 599
Col 600
Col 601
Col 602
Col 603
Col 604
Col 605
Col 606
Col 607
Col 608
Col 609
Col 610
Col 611
Col 612
Col 613
Col 614
Col 615
Col 616
Col 617
Col 618
Col 619
Col 620
Col 621
Col 622
Col 623
Col 624
Col 625
Col 626
Col 627
Col 628
Col 629
Col 630
Col 631
Col 632
Col 633
Col 634
Col 635
Col 636
Col 637
Col 638
Col 639
Col 640
Col 641
Col 642
Col 643
Col 644
Col 645
Col 646
Col 647
Col 648
Col 649
Col 650
Col 651
Col 652
Col 653
Col 654
Col 655
Col 656
Col 657
Col 658
Col 659
Col 660
Col 661
Col 662
Col 663
Col 664
Col 665
Col 666
Col 667
Col 668
Col 669
Col 670
Col 671
Col 672
Col 673
Col 674
Col 675
Col 676
Col 677
Col 678
Col 679
Col 680
Col 681
Col 682
Col 683
Col 684
Col 685
Col 686
Col 687
Col 688
Col 689
Col 690
Col 691
Col 692
Col 693
Col 694
Col 695
Col 696
Col 697
Col 698
Col 699
Col 700
Col 701
Col 702
Col 703
Col 704
Col 705
Col 706
Col 707
Col 708
Col 709
Col 710
Col 711
Col 712
Col 713
Col 714
Col 715
Col 716
Col 717
Col 718
Col 719
Col 720
Col 721
Col 722
Col 723
Col 724
Col 725
Col 726
Col 727
Col 728
Col 729
Col 730
Col 731
Col 732
Col 733
Col 734
Col 735
Col 736
Col 737
Col 738
Col 739
Col 740
Col 741
Col 742
Col 743
Col 744
Col 745
Col 746
Col 747
Col 748
Col 749
Col 750
Col 751
Col 752
Col 753
Col 754
Col 755
Col 756
Col 757
Col 758
Col 759
Col 760
Col 761
Col 762
Col 763
Col 764
Col 765
Col 766
Col 767
Col 768
Col 769
Col 770
Col 771
Col 772
Col 773
Col 774
Col 775
Col 776
Col 777
Col 778
Col 779
Col 780
Col 781
Col 782
Col 783
Col 784
Col 785
Col 786
Col 787
Col 788
Col 789
Col 790
Col 791
Col 792
Col 793
Col 794
Col 795
Col 796
Col 797
Col 798
Col 799
Col 800
Col 801
Col 802
Col 803
Col 804
Col 805
Col 806
Col 807
Col 808
Col 809
Col 810
Col 811
Col 812
Col 813
Col 814
Col 815
Col 816
Col 817
Col 818
Col 819
Col 820
Col 821
Col 822
Col 823
Col 824
Col 825
Col 826
Col 827
Col 828
Col 829
Col 830
Col 831
Col 832
Col 833
Col 834
Col 835
Col 836
Col 837
Col 838
Col 839
Col 840
Col 841
Col 842
Col 843
Col 844
Col 845
Col 846
Col 847
Col 848
Col 849
Col 850
Col 851
Col 852
Col 853
Col 854
Col 855
Col 856
Col 857
Col 858
Col 859
Col 860
Col 861
Col 862
Col 863
Col 864
Col 865
Col 866
Col 867
Col 868
Col 869
Col 870
Col 871
Col 872
Col 873
Col 874
Col 875
Col 876
Col 877
Col 878
Col 879
Col 880
Col 881
Col 882
Col 883
Col 884
Col 885
Col 886
Col 887
Col 888
Col 889
Col 890
Col 891
Col 892
Col 893
Col 894
Col 895
Col 896
Col 897
Col 898
Col 899
Col 900
Col 901
Col 902
Col 903
Col 904
Col 905
Col 906
Col 907
Col 908
Col 909
Col 910
Col 911
Col 912
Col 913
Col 914
Col 915
Col 916
Col 917
Col 918
Col 919
Col 920
Col 921
Col 922
Col 923
Col 924
Col 925
Col 926
Col 927
Col 928
Col 929
Col 930
Col 931
Col 932
Col 933
Col 934
Col 935
Col 936
Col 937
Col 938
Col 939
Col 940
Col 941
Col 942
Col 943
Col 944
Col 945
Col 946
Col 947
Col 948
Col 949
Col 950
Col 951
Col 952
Col 953
Col 954
Col 955
Col 956
Col 957
Col 958
Col 959
Col 960
Col 961
Col 962
Col 963
Col 964
Col 965
Col 966
Col 967
Col 968
Col 969
Col 970
Col 971
Col 972
Col 973
Col 974
Col 975
Col 976
Col 977
Col 978
Col 979
Col 980
Col 981
Col 982
Col 983
Col 984
Col 985
Col 986
Col 987
Col 988
Col 989
Col 990
Col 991
Col 992
Col 993
Col 994
Col 995
Col 996
Col 997
Col 998
Col 999
1 - 0
2 - 0
3 - 0
4 - 0
5 - 0
6 - 0
7 - 0
8 - 0
9 - 0
1 - 1
2 - 1
3 - 1
4 - 1
5 - 1
6 - 1
7 - 1
8 - 1
9 - 1
1 - 2
2 - 2
3 - 2
4 - 2
5 - 2
6 - 2
7 - 2
8 - 2
9 - 2
1 - 3
2 - 3
3 - 3
4 - 3
5 - 3
6 - 3
7 - 3
8 - 3
9 - 3
1 - 4
2 - 4
3 - 4
4 - 4
5 - 4
6 - 4
7 - 4
8 - 4
9 - 4
1 - 5
2 - 5
3 - 5
4 - 5
5 - 5
6 - 5
7 - 5
8 - 5
9 - 5
1 - 6
2 - 6
3 - 6
4 - 6
5 - 6
6 - 6
7 - 6
8 - 6
9 - 6
1 - 7
2 - 7
3 - 7
4 - 7
5 - 7
6 - 7
7 - 7
8 - 7
9 - 7

The above example shows a grid with 1 000 columns. Yep, it is not a million, but still quite impressive, isn’t it?

How it Works

DataTable applies lazy rendering for large number of columns as well as for rows. So, if you have lots of columns, this JavaScript grid will render only those that are really visible. When a column disappears from the screen, it will be removed from the DOM, the same as when a column needs to be shown on the screen – it will be added to the DOM. While all the above sounds quite simple, lazy column rendering is a unique feature of Webix DataTable. As far as I know, it is the only javascript grid component which provides such a functionality.

Performance

The performance is quite good in all of the modern browsers

Google Chrome
IE10
FireFox
Galaxy S3
The less the better

In comparison with other grid solutions, the advantage of Webix DataTable is quite clear. While performance of other grid components is degrading significantly, DataTable shows nearly the same rendering speed with any number of columns.

Webix
jqGrid
Kendo
ExtJs
The less the better

Touch devices

Lazy rendering works on both desktop and touch browsers. To improve performance, DataTable uses custom scrolls. They are not so smooth as the native ones. So you need to choose: either you have thousands of columns, but with not-so-nice scrolling or you have smooth native scrolling, but the number of columns in DataTable will be limited by the device performance.

It’s necessary to say that even in the native scrolling mode datatable is able to render a lot of columns over a short period of time.

Webix
Native scroll
jqGrid
Kendo
ExtJs
The less the better

Dynamic loading

Technically, it’s possible to implement dynamic column loading, similar to dynamic row loading. In such a case, data will be loaded into a specific column from a server side only when this column will become visible. From a perspective of practical use, it is too crazy, so there is no sample for this feature (though it can be done).

What it means

The same as with 1 million of rows, it is quite a rare situation, when you need to have 1000 columns in a grid. However, there are such cases in business apps, when the number of columns is beyond our control. For example, in a business report that involves data for ten-year period, with 2 parameters for each month, the resulting grid will have 240 columns ( 10 * 12 * 2 = 240 ). The use of such wide grids is not the best solution from perspective of user experience, but it is nice to know, that even in such a situation your application will remain fast and responsive.