Log in to like this post! 5 Tips for Configuring Ignite UI Grid Columns Craig Shoemaker / Wednesday, November 14, 2012 The default settings found in the Ignite UI igGrid make working with data easy, but with a little customization you can quickly change how the data appears in each column. 1. Manually Define Columns The first step to taking control of how data renders in the grid is to turn off autoGenerateColumns and manually define columns to explicitly set each of the column’s options. Options available for each column are: Setting Description dataType Represents the data type of the underlying data for the field being bound to the column. format Defines how the grid should interpret the data in the column to format for display in the grid cell. formatter References a function that is responsible for formatting the column value. headerText Text string that appears in the header of the column. hidden Boolean value indicating whether or not the column is hidden from the when the grid is rendered. key Points to key value used to look up the data value to render in the cell. template String-based template for customizing the contents of the cell. width Pixel-based value for the width of the column. 2. Define the format The format column option allows you to take control over how the data is rendered in the grid for a specified column. Depending on what type of data is provided to the column the format options vary. Date The following table depicts how the different format modes render the raw date value of 8/13/2012. Format Result date 8/13/2012 dateLong Monday, August 13, 2012 dateTime 8/13/2012 3:34 PM time 3:35 PM timeLong 3:35:17 PM MM/dd/yyy 08/13/2012 MMMM August mmm-d, yy Aug-13, 12 yy 12 h:mm:ss tt 3:37:40 dddd d MMM Monday 13 Aug Number The following table depicts how the different format modes render the raw number value of 151324.912834098234. Format Result number 151,324.91 int 151,325 currency $151,324.91 percent 151,324.91% #.### 151,324.913 0.000 151,324.913 0 151,325 double 151,324.91 Note: The double format is similar to number, with unlimited maximum number of decimal places. Other Formats Format Description string No special formatting – renders the string value as-is in from the data source. bool Renders the string ‘true’ when the value is true and nothing when the value is false. checkbox Renders a checked checkbox image (not an input element) if the value is true and an unchecked image if the value is false. 3. Use the {0} replacement token for strings When working with string typed columns, you can use the {0} replacement token to represent the incoming data value in a format string. For example if you want to add the standard prefix of “INV” to an identification string in the grid you can define the format as: $("#grid").igGrid({ columns: [ { headerText : "Part", key: "PartNumber", format: "INV-{0}" }], autoGenerateColumns: false, dataSource: data }); 4. Add a formatter Function The formatter option points to a function that allows you to evaluate the incoming data value and implement custom logic. The formatter function must take an argument of the incoming value and must return a string. Consider a grid where you want to indicate whether or not a contact is a minor by adding the string “(minor)” next to the age value in the column. The resulting formatter function would look something like this: function ageFormatter(age) { if(age > 18){ age += " (minor)"; } return age; } To use the function you set the formatter option to point to the function: $("#grid").igGrid({ columns: [{ headerText: "Age", key: "Age", dateType: "number", formatter: ageFormatter }], autoGenerateColumns: false, dataSource: data }); The formatter function is then run each time a value is bound to that column for each row. 5. Create a Custom Template If you want to have fine-grained control and use data from other columns in your column format, then you want to create a custom template. The template engine used for grid columns is a string-based template so a simple template which renders a contact’s first name would look like this: template: "${firstName}" This approach works well if you are injecting in the data from the given column you are defining. If you want to make data from another column available to your template, then you must include a hidden column which is bound to the key you need in your template. The following template demonstrates how to create a link around the person’s first name using the person’s ID: $("#grid").igGrid({ columns: [ { hidden: true, key: "ID" }, { headerText: "First Name", key: "firstName", template: "${firstName}" }], autoGenerateColumns: false, dataSource: data });