This walkthrough depicts how you can customize the tile header and the tile content. The walkthrough lets you accomplish the following customizations.
The topic comprises the following steps.
Create a new MVC application using the ComponentOne or VisualStudio templates. For more information about creating an MVC application, see Configuring your MVC Application topic.
Back to TopDashboardData.cs
). For more information on how to add a new model, see Adding Controls.DashboardData.cs
model to define the classes that serve as a data source for the different controls rendered in the DashboardLayout control.
C# |
コードのコピー
|
---|---|
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace CustomTile.Models { public class DashboardData { private IEnumerable<CountryData> _countryDetails = null; public IEnumerable<CountryData> CountryDetails { get { if (_countryDetails == null) { _countryDetails = GetCountryData(); } return _countryDetails; } } public IEnumerable<CountryData> GetCountryData() { var rand = new Random(0); var countryID = new[] { "CR001", "CR002", "CR003", "CR004", "CR005", "CR006" }; var countries = new[] { "US", "Germany", "UK", "Japan", "China", "India" }; var list = countries.Select((c, i) => { double sales = rand.Next(1, 6); double budget = rand.Next(1, 9); double expenses = rand.Next(1, 6); return new CountryData { ID = countryID[i], Country = c, Sales = sales, Budget = budget, Expenses = expenses }; }); return list; } } public class CountryData { public string ID { get; set; } public string Country { get; set; } public double Sales { get; set; } public double Budget { get; set; } public double Expenses { get; set; } } } |
DashboardController
).C# |
コードのコピー
|
---|---|
using <ApplicationName>.Models;
|
DashboardController.cs |
コードのコピー
|
---|---|
public ActionResult Index() { DashboardData data = new DashboardData(); return View(data.CountryDetails); } |
DashboardController.
Index()
.Index.cshtml |
コードのコピー
|
---|---|
<script type="text/javascript"> function formatTile(sender, e) { var dashboard = sender, // DashboardLayoutコントロールを取得します tile = e.tile; // 書式設定されたタイルを取得します switch (tile.headerText) { case 'Sales Dashboard': UpdateHeader(e.headerElement); break; case 'Country': UpdateTileContent(e.tile, e.contentElement); break; } } // ヘッダーのタイトルを変更します function UpdateHeader(header) { var headerText = 'Sales Dashboard for 2018'; header.querySelector('span.title').innerText = headerText; } // タイルの内容を更新します function UpdateTileContent(tile, contentElement) { var grid = wijmo.Control.getControl('#salesDashboardFGrid'); if (grid && grid.selectedItems && grid.selectedItems.length) { var selectedRowData = grid.selectedItems[0]; tile.hostElement.style.backgroundColor = '#009ccc'; var htmlContent = '<div style="color:white;">Country</div>' + '<div style="font-size:72px; text-align: center; color:white;overflow:hidden; text-overflow:ellipsis">' + selectedRowData.Country + '</div>'; contentElement.innerHTML = htmlContent; } } function gridSelectionChanged(sender, e) { // グリッドでselectionChangedが発生した後、DashboardLayoutコントロールを更新します var dashboard = wijmo.Control.getControl('#custom'); dashboard.refresh(); } </script> |
Index.cshtml |
コードのコピー
|
---|---|
@using <ApplicationName>.Models @using C1.Web.Mvc.Grid; @model IEnumerable<CountryData> <div style="position:absolute;left:-10000px; top:-10000px; visibility:hidden"> @(Html.C1().FlexGrid().Id("salesDashboardFGrid") .IsReadOnly(true).AutoGenerateColumns(false) .HeadersVisibility(HeadersVisibility.Column) .AllowResizing(AllowResizing.None) .SelectionMode(C1.Web.Mvc.Grid.SelectionMode.Row) .Bind(Model) .Columns(clsb => { clsb.Add(cb => cb.Header("Country").Binding("Country").Width("*")); clsb.Add(cb => cb.Header("Current Year(mil.)").Binding("Sales") .Format("c0").Width("*")); }) .OnClientSelectionChanged("gridSelectionChanged")) </div> <br /> @(Html.C1().DashboardLayout().Id("custom") .AttachAutoGridLayout(aglb => aglb.Orientation(LayoutOrientation.Vertical) .MaxRowsOrColumns(6) .CellSize(152) .Items(isb => { isb.Add().Children(cb => { cb.Add().HeaderText("Sales Dashboard") .Content("#salesDashboardFGrid") .ColumnSpan(2).RowSpan(2) .ShowToolbar(false); cb.Add().HeaderText("Country") .ColumnSpan(2).RowSpan(1) .ShowHeader(false).ShowToolbar(false); }); }) ) .OnClientFormatTile("formatTile")) |