Features

データマップ

データマップ

このサンプルは、MultiRowコントロールに自動検索機能を提供するデータマップ機能を使用する方法を示します。

機能

Data Map

データマップは、グリッドに自動検索機能を提供します。たとえば、顧客のIDの代わりに顧客名、RGB値の代わりに色名を表示できます。

関連付けられたデータマップを持つ列は、連結値の代わりにマップされた表示値に基づいてソートすることができます。

このサンプルでは、関連付けられたデータマップを持つ列には、クイック編集に使用できるドロップダウンボタンが表示されます。ドロップダウンボタンを表示しない場合は、列のShowDropDownプロパティをfalseに設定します。

 複数列のデータマップ

複数列のデータマップ

MultiRowコントロールの列にはDropDownCssClassプロパティがあり、これにより、データマップ列の値の編集に使用できるドロップダウンのスタイルを設定できます。

複数列エディタの動作を確認するには、「Color」列のいずれかのドロップダウンボタンのをクリックするか、
この列内のセルを選択して[F4]キーを押します。

using System;
using System.Collections;
using System.Globalization;
using System.Linq;
using System.Web.Mvc;
using C1.Web.Mvc;
using MultiRowExplorer.Models;
using System.Collections.Generic;
using C1.Web.Mvc.Serialization;


namespace MultiRowExplorer.Controllers
{
    public partial class MultiRowController : Controller
    {
        public static List<Sale> SALES = CustomerSale.GetData(100).ToList();
        public ActionResult DataMap()
        {
            ViewBag.Products = CustomerSale.PRODUCTS;
            ViewBag.Colors = CustomerSale.COLORS;
            return View(SALES);
        }

        public ActionResult RemoteBindCustomerSale_Read([C1JsonRequest] CollectionViewRequest<Sale> requestData)
        {
            return this.C1Json(CollectionViewHelper.Read(requestData, SALES, (col) =>
            {
                var cell = col as C1.Web.Mvc.MultiRow.CellInfo;

                if (cell.Binding == "Product")
                {
                    return CustomerSale.PRODUCTS;
                }

                if (cell.Binding == "Color")
                {
                    return CustomerSale.COLORS;
                }

                return null;
            }));
        }

        public ActionResult ProductsUpdate([C1JsonRequest]CollectionViewEditRequest<Sale> requestData)
        {
            return this.C1Json(CollectionViewHelper.Edit<Sale>(requestData, sale =>
            {
                string error = string.Empty;
                bool success = true;
                var fSale = SALES.Find(item => item.ID == sale.ID);
                fSale.Active = sale.Active;
                fSale.Amount = sale.Amount;
                fSale.Color = sale.Color;
                fSale.Country = sale.Country;
                fSale.Discount = sale.Discount;
                fSale.End = sale.End;
                fSale.Amount2 = sale.Amount2;
                fSale.Start = sale.Start;
                fSale.Product = sale.Product;
                return new CollectionViewItemResult<Sale>
                {
                    Error = error,
                    Success = success && ModelState.IsValid,
                    Data = fSale
                };
            }, () => SALES));
        }

    }
}
@using C1.Web.Mvc.Grid

@model IEnumerable<Sale>
@{
    List<CustomerSale.NamedProduct> products = ViewBag.Products;
    List<NamedColor> colors = ViewBag.Colors;
    ViewBag.DemoDescription = false;
}
<h3>
    Data Map
</h3>
<p>@Html.Raw(Resources.MultiRowExplorer.DataMap_Text0)</p>

@(Html.C1().MultiRow<Sale>()
        .Id("dmMultiRow")
        .Bind(bl => bl.Bind(Url.Action("RemoteBindCustomerSale_Read")).Update(Url.Action("ProductsUpdate")))
        .CssClass("multirow")
        .IsReadOnly(false)
        .LayoutDefinition(ld =>
        {
            ld.Add().Colspan(1).Cells(bl =>
            {
                bl.Add(cb => cb.Binding("ID").IsReadOnly(true));
                bl.Add(cb => cb.Binding("Active"));

            });
            ld.Add().Colspan(1).Cells(bl =>
            {
                bl.Add(cb => cb.Binding("Start").Format("MMM d yy"));
                bl.Add(cb => cb.Binding("End").Format("HH:mm"));
            });
            ld.Add().Colspan(2).Cells(bl =>
            {
                bl.Add(cb => cb.Binding("Country").Colspan(2));
                bl.Add(cb => cb.Binding("Product")
                    .DataMap(dm => dm.DisplayMemberPath("Name")
                        .SelectedValuePath("Id")
                        .SortByDisplayValues(true)
                        .Bind(products)));
                bl.Add(cb => cb.Binding("Color")
                    .DataMap(dm => dm.DisplayMemberPath("Name")
                        .SelectedValuePath("Value")
                        .SortByDisplayValues(true)
                        .Bind(colors)));
            });
            ld.Add().Colspan(2).Cells(bl =>
            {
                bl.Add(cb => cb.Binding("Amount").Format("c"));
                bl.Add(cb => cb.Binding("Amount2").Format("c"));
                bl.Add(cb => cb.Binding("Discount").Format("p0").Colspan(2));

            });
        })
)
<p>&nbsp;@Html.Raw(Resources.MultiRowExplorer.DataMap_Text1)</p>
<h4>
    @Html.Raw(Resources.MultiRowExplorer.DataMap_Text1)
</h4>
<p>@Html.Raw(Resources.MultiRowExplorer.DataMap_Text2)</p>

<p>@Html.Raw(Resources.MultiRowExplorer.DataMap_Text3)</p>

@(Html.C1().MultiRow<Sale>()
        .Id("dmMultiColumns")
        .Bind(bl => bl.InitialItemsCount(100).Bind(Model).Update(Url.Action("ProductsUpdate")))
        .CssClass("multirow")
        .IsReadOnly(false)
        .LayoutDefinition(ld =>
        {
            ld.Add().Colspan(1).Cells(bl =>
            {
                bl.Add(cb => cb.Binding("ID").IsReadOnly(true));
                bl.Add(cb => cb.Binding("Active"));

            });
            ld.Add().Colspan(1).Cells(bl =>
            {
                bl.Add(cb => cb.Binding("Start").Format("MMM d yy"));
                bl.Add(cb => cb.Binding("End").Format("HH:mm"));
            });
            ld.Add().Colspan(2).Cells(bl =>
            {
                bl.Add(cb => cb.Binding("Country").Colspan(2));
                bl.Add(cb => cb.Binding("Product")
                    .DataMap(dm => dm.DisplayMemberPath("Name")
                        .SelectedValuePath("Id")
                        .SortByDisplayValues(true)
                        .Bind(products)));
                bl.Add(cb => cb.Binding("Color")
                    .DropDownCssClass("multi-column")
                    .DataMap(dm => dm.DisplayMemberPath("Name")
                        .SelectedValuePath("Value")
                        .SortByDisplayValues(true)
                        .Bind(colors)));
            });
            ld.Add().Colspan(2).Cells(bl =>
            {
                bl.Add(cb => cb.Binding("Amount").Format("c"));
                bl.Add(cb => cb.Binding("Amount2").Format("c"));
                bl.Add(cb => cb.Binding("Discount").Format("p0").Colspan(2));

            });
        })
)

@section Summary{
    @Html.Raw(Resources.MultiRowExplorer.DataMap_Text4)
}