FlexGrid has an itemFormatter property that gives you complete control over the contents of the cells. MVC Edition provides CellTemplate to let users customize the cell content in FlexGrid control. To define a cell template for a column, add the HTML to display in each cell to the column definition.
The following image shows how the FlexGrid appears on setting FlexChart as a cell template to represent Trends, and Stars as another template for representing Rank. The example uses Sale.cs model added in the QuickStart section.
The following code examples demonstrate how to set the custom cell templates in a column of the FlexGrid:
CustomCellsController.cs
C# |
Copy Code
|
---|---|
public ActionResult CustomCells() { return View(Sales.GetData(15)); } |
CustomCells.cshtml
Razor |
Copy Code
|
---|---|
@using MVCFlexGrid.Models @model IEnumerable<Sale> <script id="template1" type="text/html"> @(Html.C1().FlexChart() .Width(100).Height(20).CssStyle("padding", "0") .TemplateBind("ItemsSource", "Trends") .BindingX("Month") .Series(s => s.Add().Binding("Data")) .AxisX(C1.Web.Mvc.Chart.Position.None) .AxisY(C1.Web.Mvc.Chart.Position.None) .ToTemplate() ) </script> <style> .star-highlighted { color: orange; } .star-dimmed { color: lightgray; } </style> <script type="text/javascript"> function rankFormatter(panel, r, c, cell) { if (panel.columns[c].binding === "Rank") { cell.style.textAlign = ""; if (panel.cellType === wijmo.grid.CellType.Cell) { cell.innerHTML = buildRank(panel.getCellData(r, c)); } } } function buildRank(rank) { var markup = "", j, starType; for (j = 0; j < 5; j++) { starType = j < rank ? "star star-highlighted" : "star star-dimmed"; markup += "<span class='" + starType + "'>\u2605</span>"; } return markup; } </script> @(Html.C1().FlexGrid<Sale>() .AutoGenerateColumns(false) .IsReadOnly(true) .Bind(Model) .CssClass("grid") .Columns(columns => { columns.Add(column => column.Binding("ID")); columns.Add(column => column.Binding("Country")); columns.Add(column => column.Binding("Product")); columns.Add(column => column.Header("Trends").CellTemplate(b => b.Template("template1"))); columns.Add(column => column.Binding("Rank")); }) .ItemFormatter("rankFormatter") ) |