TabOrder
TabOrder
TabOrder
このビューは、TabOrderの使用方法を示します。
機能
サンプル
Customer Order | Customer Sale | |
---|---|---|
Country* | ||
Product* | ||
Price* | ||
Date |
設定
説明
このサンプルは、コントロールにTabOrderを使用する方法を示します。デフォルト設定では、コントロールにTabOrderプロパティが表示されません。カスタマイズ設定は、各コントロールのTabOrderプロパティを指定します。タブオーダーは、コード内のインタラクティブ要素の順序に従わずに、コンテンツ内の関係に従います。
TabIndex属性値は、コントロールのホストHTML要素で指定することで、Wijmoコントロールに対して静的に定義できます。ただし、Wijmoコントロールは複雑な構造であり、コントロールが正しく機能できるように、属性値を内部要素に伝達する必要があるため、この値をアプリケーションのライフサイクルの後半で変更することはできません。
そのため、コントロールのtabindexを動的に読み取ったり変更したりするには、TabOrderプロパティを使用して行う必要があります。
ソース
IndexController.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using MvcExplorer.Models; namespace MvcExplorer.Controllers { public partial class TabOrderController : Controller { private readonly ControlOptions _optionModel = new ControlOptions { Options = new OptionDictionary { {"Tab Order",new OptionItem{ Values = new List<string> { "Default", "Customized"}, CurrentValue = "Default"}} } }; public ActionResult Index(FormCollection collection) { IValueProvider data = collection; _optionModel.LoadPostData(data); ViewBag.DemoOptions = _optionModel; return View(); } } }
Index.cshtml
@{ ControlOptions optionsModel = ViewBag.DemoOptions; ViewBag.DemoSettings = true; string tabOrder = optionsModel.Options["Tab Order"].CurrentValue; } <div class="container-fluid"> <div class="row"> <div class="col-md-7 col-md-offset-2" style="text-align: center; max-width: 660px;"> @if (tabOrder == "Customized") { <table class="input-form"> <tr> <th></th> <th>Customer Order</th> <th>Customer Sale</th> </tr> <tr> <th>Country*</th> <td>@Html.C1().ComboBox().Id("orderCountry").Bind(Countries.GetCountries()).TabOrder(1).IsRequired(true)</td> <td>@Html.C1().ComboBox().Id("saleCountry").Bind(Countries.GetCountries()).TabOrder(5).IsRequired(true)</td> </tr> <tr> <th>Product*</th> <td>@Html.C1().ComboBox().Id("orderProduct").Bind(Products.GetProducts()).TabOrder(2).IsRequired(true)</td> <td>@Html.C1().ComboBox().Id("saleProduct").Bind(Products.GetProducts()).TabOrder(6).IsRequired(true)</td> </tr> <tr> <th>Price*</th> <td>@Html.C1().InputNumber().Id("orderPrice").Min(0).Step(1).Value(0).Format("c0").IsRequired(true).TabOrder(3)</td> <td>@Html.C1().InputNumber().Id("salePrice").Min(0).Step(1).Value(0).Format("c0").IsRequired(true).TabOrder(7)</td> </tr> <tr> <th>Date</th> <td>@Html.C1().InputDate().Id("orderDate").Value(DateTime.Today).IsRequired(false).TabOrder(4)</td> <td>@Html.C1().InputDate().Id("saleDate").Value(DateTime.Today).IsRequired(false).TabOrder(8)</td> </tr> </table> } else { <table class="input-form"> <thead> <tr> <th></th> <th>Customer Order</th> <th>Customer Sale</th> </tr> </thead> <tbody> <tr> <th>Country*</th> <td>@Html.C1().ComboBox().Id("orderCountry").Bind(Countries.GetCountries()).IsRequired(true)</td> <td>@Html.C1().ComboBox().Id("saleCountry").Bind(Countries.GetCountries()).IsRequired(true)</td> </tr> <tr> <th>Product*</th> <td>@Html.C1().ComboBox().Id("orderProduct").Bind(Products.GetProducts()).IsRequired(true)</td> <td>@Html.C1().ComboBox().Id("saleProduct").Bind(Products.GetProducts()).IsRequired(true)</td> </tr> <tr> <th>Price*</th> <td>@Html.C1().InputNumber().Id("orderPrice").Min(0).Step(1).Value(0).Format("c0").IsRequired(true)</td> <td>@Html.C1().InputNumber().Id("salePrice").Min(0).Step(1).Value(0).Format("c0").IsRequired(true)</td> </tr> <tr> <th>Date</th> <td>@Html.C1().InputDate().Id("orderDate").Value(DateTime.Today).IsRequired(false)</td> <td>@Html.C1().InputDate().Id("saleDate").Value(DateTime.Today).IsRequired(false)</td> </tr> </tbody> </table> } <br /> <button id="add-row" class="btn btn-primary col-sm-offset-2" > <b><i class="glyphicon-plus"></i> Add Data</b> </button> <br /> </div> <br /> <br /> <div class="col-md-12"> <div class="col-md-6"> <label>Customer order</label> @(Html.C1().FlexGrid<CustomerOrder>() .AutoGenerateColumns(false) .Id("order").Height("200px") .CssClass("grid").IsReadOnly(true) .AllowAddNew(true) .Bind(b => b.Bind(CustomerOrder.GetCountryGroupOrderData()).DisableServerRead(true)) .Columns(bl => { bl.Add(cb => cb.Binding("ID").Width("40")); bl.Add(cb => cb.Binding("OrderTime").Width("100")); bl.Add(cb => cb.Binding("Country").Width("100") .DataMap(dm => dm.DisplayMemberPath("Name") .SelectedValuePath("Name") .SortByDisplayValues(true))); bl.Add(cb => cb.Binding("Product").Width("100") .DataMap(dm => dm.DisplayMemberPath("Name") .SelectedValuePath("Name") .SortByDisplayValues(true))); bl.Add(cb => cb.Binding("Price").Format("c").Width("100")); }) .SelectionMode(C1.Web.Mvc.Grid.SelectionMode.Row).TabOrder(0) ) </div> <div class="col-md-6"> <label>Customer Sale</label> @(Html.C1().FlexGrid<Sale>() .AutoGenerateColumns(false) .Id("sale").Height("200px") .CssClass("grid").IsReadOnly(true) .AllowAddNew(true) .Bind(b => b.Bind(CustomerSale.GetData(10)).DisableServerRead(true)) .Columns(bl => { bl.Add(cb => cb.Binding("ID").Width("40")); bl.Add(cb => cb.Binding("Start").Width("100")); bl.Add(cb => cb.Binding("Country").Width("100") .DataMap(dm => dm.DisplayMemberPath("Name") .SelectedValuePath("Name") .SortByDisplayValues(true) .Bind(FullCountry.GetCountries()))); bl.Add(cb => cb.Binding("Product").Width("100") .DataMap(dm => dm.DisplayMemberPath("Name") .SelectedValuePath("Id") .SortByDisplayValues(true) .Bind(CustomerSale.PRODUCTS))); bl.Add(cb => cb.Binding("Amount").Format("c").Width("100")); }) .SelectionMode(C1.Web.Mvc.Grid.SelectionMode.Row).TabOrder(0) ) </div> </div> </div> </div> @section Styles{ <style> .input-form td, th { padding: 0.5rem; } .input-form .wj-template{ width:240px; } </style> } @section Scripts{ <script> c1.documentReady(function () { let cOrderGrid = wijmo.Control.getControl("#order") let orderCountry = wijmo.Control.getControl("#orderCountry"); let orderProduct = wijmo.Control.getControl("#orderProduct"); let orderPrice = wijmo.Control.getControl("#orderPrice"); let orderDate = wijmo.Control.getControl("#orderDate"); let cSaleGrid = wijmo.Control.getControl("#sale"); let saleCountry = wijmo.Control.getControl("#saleCountry"); let saleProduct = wijmo.Control.getControl("#saleProduct"); let salePrice = wijmo.Control.getControl("#salePrice"); let saleDate = wijmo.Control.getControl("#saleDate"); document.getElementById('add-row').addEventListener('click', function (e) { //add new row to Order grid cOrderGrid.focus(); let oview = cOrderGrid.editableCollectionView; let onewItem = oview.addNew(); onewItem.ID = oview.items.length; onewItem.OrderTime = orderDate.value; onewItem.Country = orderCountry.selectedValue; onewItem.Product = orderProduct.selectedValue; onewItem.Price = orderPrice.value; oview.commitNew(); //add new row to Sale grid cSaleGrid.focus(); let sview = cSaleGrid.editableCollectionView; let snewItem = sview.addNew(); snewItem.ID = sview.items.length; snewItem.Start = saleDate.value; snewItem.Country = saleCountry.selectedValue; snewItem.Product = saleProduct.selectedValue; snewItem.Amount = salePrice.value; sview.commitNew(); e.preventDefault(); // don't submit the form }); }) </script> } @section Settings{ @Html.Partial("_OptionsMenu", optionsModel) } @section Summary{ <p>@Html.Raw(Resources.TabOrder.TabOrder_Text0)</p> } @section Description{ <p>@Html.Raw(Resources.TabOrder.TabOrder_Description_Text0)</p> <p>@Html.Raw(Resources.TabOrder.TabOrder_Description_Text1)</p> <p>@Html.Raw(Resources.TabOrder.TabOrder_Description_Text2)</p> }
マニュアル