Menuコントロールは、FlexGrid、ListBoxなどの他のMVCコントロールと一緒にコンテキストメニューとして使用できます。ユーザーがコントロール内で右クリックすると、ユーザーによって追加されたカスタムフィールドを含むコンテキストメニューとしてMenuが表示されます。さまざまな項目をMenuに追加することで、FlexGridのフィルタ処理、ソート、グループ化などの各種操作ができます。Menuコントロールと他のMVCコントロールとのシームレスな統合により、ユーザーは項目を追加し、コントロールのIDをMenuのOwnerプロパティに割り当てて、コントロールのコンテキストメニューをカスタマイズできます。
この例では、MenuはFlexGridコントロールのグループ化を有効にするコンテキストメニューとして使用されます。GroupBy: CountryとGroupBy: Productという2つのフィールドがMenuに追加されることで、FlexGridのデータがCountry列とProduct列でグループ化されます。ユーザーは、グリッド内で右クリックしてコンテキストメニューから項目を選択できます。
次の図は、Menuコントロールをコンテキストメニューとして追加した後のFlexGridを示しています。
次のコード例は、メニューコントロールをFlexGridでContext Menuとして使用する方法を示します。
ContextMenuController.cs
Razor |
コードのコピー
|
---|---|
public ActionResult Index() { return View(Sale.GetData(10)); } } |
ContextMenu.cshtml
C# |
コードのコピー
|
---|---|
@using MVCFlexGrid_JP.Models; @using C1.Web.Mvc.Grid @model IEnumerable<Sale> <style> .flexGrid { margin: 10px; padding: 20px; color: white; display: inline-block; } </style> <script> //CollectionViewを使用するグリッドのソート関数。 function setGrouping(arg) { var grid = wijmo.Control.getControl("#Sales"); var cv = grid.collectionView; var gd = cv.groupDescriptions; gd.push(new wijmo.collections.PropertyGroupDescription(arg)); } </script> <div class="multi-grid"> @(Html.C1().FlexGrid<Sale>() .AutoGenerateColumns(false) .Id("Sales") .Height(450) .Width(700) .AllowAddNew(true) .SelectionMode(C1.Web.Mvc.Grid.SelectionMode.Cell) .CssClass("grid") .Bind(Model) // FlexGridで列が表示されるように定義します。 .Columns(bl => { bl.Add(cb => cb.Binding("ID")); bl.Add(cb => cb.Binding("開始日")); bl.Add(cb => cb.Binding("製品名")); bl.Add(cb => cb.Binding("金額").Format("c")); bl.Add(cb => cb.Binding("割引").Format("p0")); bl.Add(cb => cb.Binding("アクティブ")); }) ) </div> //C1Menuコントロールを初期化します。 @(Html.C1().Menu().Header("グループで表示") .Id("ctxMenu") .Command("setGrouping") //コンテキストメニューにて表示する項目を追加します。 .MenuItems(items => { items.Add("グループで表示: 国名", "国名"); items.Add("グループで表示: 製品名", "製品名"); }) .CssStyle("display", "none") .Owner("#Sales") ) |