igGrid - export to csv

by georgianastasov

HTML

<script src="https://igniteui.com/js/modernizr.min.js"></script>
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="https://code.jquery.com/ui/1.10.3/jquery-ui.min.js"></script>
<script src="https://cdn-na.infragistics.com/igniteui/latest/js/infragistics.core.js"></script>
<script src="https://cdn-na.infragistics.com/igniteui/latest/js/infragistics.lob.js"></script>
<script src="https://igniteui.com/data-files/adventureworks.min.js"></script>
<link href="https://cdn-na.infragistics.com/igniteui/latest/css/themes/infragistics/infragistics.theme.css" rel="stylesheet"></link>
<link href="https://cdn-na.infragistics.com/igniteui/latest/css/structure/infragistics.css" rel="stylesheet"></link>

<table id="grid"></table>
<input type="button" id="exportButton" value="Export to CSV" style="margin-top: 1rem"/>

JavaScript

$(function () {
		$(function () {
	
  //data
  var data = [
  {ProductID: 1, ProductName: 'Adjustable Race', ProductNumber: 'AR-5381', Available: true},
  {ProductID: 2, ProductName: 'Bearing Ball', ProductNumber: 'BA-8327', Available: false},
  {ProductID: 3, ProductName: 'BB Ball Bearing', ProductNumber: 'BE-2349', Available: true},
  {ProductID: 4, ProductName: 'Headset Ball Bearings', ProductNumber: 'BE-2908', Available: true},
  {ProductID: 5, ProductName: 'Blade', ProductNumber: 'BL-2036', Available: false},
  {ProductID: 6, ProductName: 'Chai', ProductNumber: 'BM-2245', Available: false},
  {ProductID: 7, ProductName: 'Chaing Ball', ProductNumber: 'BK-2911', Available: true},
  ]

						//grid
            $("#grid").igGrid({
                autoGenerateColumns: false,
                width: "100%",
                height: "450px",
                columns: [
                    { headerText: "Product ID", key: "ProductID", dataType: "number", width: "15%" },
                    { headerText: "Product Name", key: "ProductName", dataType: "string", width: "40%" },
                    { headerText: "Product Number", key: "ProductNumber", dataType: "string", width: "30%" },
                    { headerText: "Available", key: "Available", dataType: "bool", width: "15%" }
                ],
                dataSource: data,
								defaultColumnWidth: "200px",
								primaryKey: "ProductID"
            });
            
            //button to export to csv
            $( "#exportButton" ).igButton( {
                labelText: $( "#exportButton" ).val(),
                click: function ( e )
                {
                    var ds = $("#grid").igGrid("option", "dataSource");
										var cols = $("#grid").igGrid("option", "columns");

										var csv = [];
										var headerRow = [];

										$.each(cols, function (index, col) {
											headerRow.push(col.key)
										});
										csv.push(headerRow.join(","));

										$.each(ds, function...