Editing Events
FlexGrid has several events related to editing.
This example shows how you can use two of them:
- beginningEdit: Prevent editing overdue items by setting the cancel parameter to true.
- cellEditEnding: Prevent entering negative amounts for the 'sales' and 'expenses' columns.
ID
Country
Sales
Expenses
Overdue
0
US
81,732.54
38,401.13
1
Germany
20,603.32
27,944.24
2
UK
44,217.79
48,877.49
3
Japan
29,190.63
23,365.74
4
Sweden
46,951.19
49,107.56
5
Norway
86,237.02
49,767.35
6
Denmark
31,459.18
40,845.40
ID
Country
Sales
Expenses
Overdue
0
- C1FlexGrid/CustomEditing.js
- C1FlexGrid/CustomEditing.css
- CustomEditingController.cs
- CustomEditing.cshtml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | // This file locates: "Scripts/Lesson/C1FlexGrid/CustomEditing.js". c1.documentReady(function () { var theGrid = wijmo.Control.getControl( '#theGrid' ); theGrid.beginningEdit.addHandler(function(s, e) { var col = s.columns[e.col]; if (col.binding != 'Overdue' ) { var item = s.rows[e.row].dataItem; if (item.Overdue) { // prevent editing overdue items e.cancel = true ; showMessage( 'Overdue items cannot be edited' ); } } }); theGrid.cellEditEnding.addHandler(function (s, e) { showMessage( ' ' ); var col = s.columns[e.col]; if (col.binding == 'Sales' || col.binding == 'Expenses' ) { var value = wijmo.changeType(s.activeEditor.value, wijmo.DataType.Number, col.format); if (!wijmo.isNumber(value) || value < 0) { // prevent negative sales/expenses e.cancel = true ; showMessage( 'Please enter a positive amount' ); } } }); // show log message var elLog = document.getElementById( 'log' ); function showMessage(msg) { elLog.innerHTML = msg; } }); |
1 2 3 4 5 6 7 | // This file locates: "Content/css/Lesson/C1FlexGrid/CustomEditing.css". #log { font-style: italic; text-align: center; margin-bottom: 10px; opacity: .5; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 | using System.Web.Mvc; namespace LearnMvcClient.Controllers { public partial class C1FlexGridController : Controller { // GET: CustomEditing public ActionResult CustomEditing() { return View(Models.FlexGridData.GetSales(Models.FlexGridData.Countries7)); } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | @model IEnumerable< FlexGridData.Sale > < h1 > @Html .Raw(Resources.C1FlexGrid.CustomEditing_Title) </ h1 > < p > @Html .Raw(Resources.C1FlexGrid.CustomEditing_Text1) </ p > < p > @Html .Raw(Resources.C1FlexGrid.CustomEditing_Text2) </ p > < ul > < li > @Html .Raw(Resources.C1FlexGrid.CustomEditing_Text3) </ li > < li > @Html .Raw(Resources.C1FlexGrid.CustomEditing_Text4) </ li > </ ul > < div id = "log" > @Html .Raw(Resources.C1FlexGrid.CustomEditing_Text5) </ div > @ (Html.C1().FlexGrid().Id( "theGrid" ).Height(200) .AutoGenerateColumns( false ) .Bind(Model) .Columns(cs => { cs.Add().Binding( "Id" ).Header( "ID" ).Width( "50" ).IsReadOnly( true ); cs.Add().Binding( "Country" ).Header( "Country" ).IsRequired( true ); cs.Add().Binding( "Sales" ).Header( "Sales" ).Format( "n2" ); cs.Add().Binding( "Expenses" ).Header( "Expenses" ).Format( "n2" ); cs.Add().Binding( "Overdue" ).Header( "Overdue" ); }) ) |