FlexGridが連結モードの場合、グリッド内のデータは特定のデータソースから自動的に挿入されます。しかし、非連結FlexGridの場合は、APIで提供されている別の方法を使用してグリッドの列と行を追加/削除する必要があります。
このトピックでは、AJAXを使用して、クライアント側で非連結FlexGridにデータを挿入する方法を説明します。サーバーからのデータは辞書に保存され、クライアントに送信される前にJSONにシリアライズされます。
このトピックは次の手順で構成されます。
次の図は、AJAXを使用してクライアント側で非連結FlexGridにデータを挿入する方法を示しています。この例では、「クイックスタート」セクションで追加したSale.csモデルを使用します。

Visual Studioで、ComponentOne ASP.NET MVC 5 Web Applicationテンプレートを使用して新しいMVCアプリケーションを作成します。MVCアプリケーションを作成する方法の詳細については、「ComponentOneテンプレートの使用」を参照してください。
先頭に戻る
Sale.cs)。新しいモデルを追加する方法の詳細については、「コントロールの追加」を参照してください。Sale.csモデル内の次のコードを置き換えます。ここでは、Saleクラスを使用して、データベース内の受注データを表しています。Saleオブジェクトの各インスタンスがFlexGridコントロール内の1つのレコードに対応します。
| C# |
コードのコピー
|
|---|---|
public class Sale { public int ID { get; set; } public DateTime Start { get; set; } public DateTime End { get; set; } public string Country { get; set; } public string Product { get; set; } public string Color { get; set; } public double Amount { get; set; } public double Amount2 { get; set; } public double Discount { get; set; } public bool Active { get; set; } public MonthData[] Trends { get; set; } public int Rank { get; set; } private static List <string> COUNTRIES = new List<string> { "米国", "イギリス", "カナダ", "日本", "中国", "フランス", "ドイツ", "イタリア", "韓国", "オーストラリア" }; private static List<string> PRODUCTS = new List<string> { "Widget", "Gadget", "Doohickey" }; /// <summary> /// データを取得 /// </summary> /// <param name="total"></param> /// <returns></returns> public static IEnumerable<Sale> GetData(int total) { var colors = new[] { "黒色", "白色", "赤色", "緑色", "青い色" }; var rand = new Random(0); var dt = DateTime.Now; var list = Enumerable.Range(0, total).Select(i => { var country = COUNTRIES[rand.Next(0, COUNTRIES.Count - 1)]; var product = PRODUCTS[rand.Next(0, PRODUCTS.Count - 1)]; var color = colors[rand.Next(0, colors.Length - 1)]; var startDate = new DateTime(dt.Year, i % 12 + 1, 25); var endDate = new DateTime(dt.Year, i % 12 + 1, 25, i % 24, i % 60, i % 60); return new Sale { ID = i + 1, 開始日 = startDate, 終了日 = endDate, 国名 = country, 製品名 = product, 色 = color, 金額 = Math.Round(rand.NextDouble() * 10000 - 5000, 2), 金額2 = Math.Round(rand.NextDouble() * 10000 - 5000, 2), 割引 = Math.Round(rand.NextDouble() / 4, 2), アクティブ = (i % 4 == 0), 傾向 = Enumerable.Range(0, 12).Select(x => new MonthData { Month = x + 1, Data = rand.Next(0, 100) }).ToArray(), ランク = rand.Next(1, 6) }; }); return list; } public static List<string> GetCountries() { var countries = new List<string>(); countries.AddRange(COUNTRIES); return countries; } public static List<string> GetProducts() { List<string> products = new List<string>(); products.AddRange(PRODUCTS); return products; } } public class MonthData { public int Month { get; set; } public double Data { get; set; } } public class BasicSale { public int Sale { get; set; } public DateTime Date { get; set; } public BasicSale(int sale, DateTime date) { Sale = sale; Date = date; } public static List<BasicSale> GetBasicSales() { List<BasicSale> list = new List<BasicSale>(); int[] sales = { 96, 19, 54, 83, 15, 56, 36, 4, 29, 93, 38, 71, 50, 77, 69, 13, 79, 57, 29, 62, 4, 27, 66, 96, 65, 12, 52, 3, 61, 48, 50, 70, 39, 33, 25, 49, 69, 46, 44, 40, 35, 72, 64, 10, 66, 63, 78, 19, 96, 26}; for (int i = 0; i < sales.Length; i++) { list.Add(new BasicSale(sales[i], new DateTime(2014, i / 31 + 1, i % 31 + 1))); } return list; } } |
|
| C# |
コードのコピー
|
|---|---|
using C1.Web.Mvc; using C1.Web.Mvc.Serialization; using FlexGridIntro.Models; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; |
|
| C# |
コードのコピー
|
|---|---|
private static List<Sale> Sales = Sale.GetData(50).ToList<Sale>(); public IActionResult Index() { return View(); } public JsonResult GetJsonData() { return Json(Sales); } |
|
Index.htmlを開きます。| CSHTML |
コードのコピー
|
|---|---|
<script>
$.ajax({
type: "POST",
url: "/Home/GetJsonData",
dataType: "json",
success: function (data) {
var fg = wijmo.Control.getControl("#flexgrid"); //FlexGridリファレンスを取得します
fg.rows.clear(); //FlexGridから既存の行をすべてクリアします
var j = 0
for (var i in data) {
var obj = [data[i].product, data[i].country, data[i].amount];
var row = new wijmo.grid.Row(); // FlexGridに行を追加します
fg.rows.push(row);
for (var col = 0; col <= fg.columns.length - 1; col++) {
fg.setCellData(j, col, obj[col]); //FlexGridセルにデータを追加します
}
j++;
}
},
error: function (err) {
alert("err");
}
});
</script>
<c1-flex-grid auto-generate-columns="false" key-action-tab="Cycle" height="500px" id="flexgrid">
<c1-flex-grid-column name="Product" header="製品名"></c1-flex-grid-column>
<c1-flex-grid-column name="Country" header="国名"></c1-flex-grid-column>
<c1-flex-grid-column name="Amount" header="金額"></c1-flex-grid-column>
</c1-flex-grid>
|
|