1 | <!doctype html> |
---|
2 | <html lang="en"> |
---|
3 | <head> |
---|
4 | <title>Grid - Custom Editors</title> |
---|
5 | <meta charset="utf-8" /> |
---|
6 | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> |
---|
7 | <meta name="description" content="custom editors" /> |
---|
8 | <meta name="keywords" content="" /> |
---|
9 | <meta name="author" content="ComponentOne" /> |
---|
10 | |
---|
11 | <link href="../../themes/rocket/jquery-wijmo.css" rel="stylesheet" type="text/css"/> |
---|
12 | <link href="../../themes/wijmo/jquery.wijmo-open.2.2.2.css" rel="stylesheet" type="text/css" /> |
---|
13 | <link href="../../themes/wijmo/jquery.wijmo.wijcombobox.css" rel="stylesheet" type="text/css" /> |
---|
14 | <link href="../../themes/wijmo/jquery.wijmo.wijinput.css" rel="stylesheet" type="text/css" /> |
---|
15 | <link href="../../themes/wijmo/jquery.wijmo.wijgrid.css" rel="stylesheet" type="text/css" /> |
---|
16 | |
---|
17 | <script src="../../external/jquery-1.8.0.min.js" type="text/javascript"></script> |
---|
18 | <script src="../../external/jquery-ui-1.8.23.custom.min.js" type="text/javascript"></script> |
---|
19 | <script src="../../external/globalize.min.js" type="text/javascript"></script> |
---|
20 | |
---|
21 | <script src="../../external/jquery.wijmo-open.all.2.2.2.min.js" type="text/javascript"></script> |
---|
22 | <script src="../../wijmo/jquery.wijmo.wijdatasource.js" type="text/javascript"></script> |
---|
23 | <script src="../../wijmo/jquery.wijmo.wijcombobox.js" type="text/javascript"></script> |
---|
24 | <script src="../../wijmo/jquery.plugin.wijtextselection.js" type="text/javascript"></script> |
---|
25 | <script src="../../wijmo/jquery.wijmo.wijinputcore.js" type="text/javascript"></script> |
---|
26 | <script src="../../wijmo/jquery.wijmo.wijinputnumber.js" type="text/javascript"></script> |
---|
27 | <script src="../../wijmo/jquery.wijmo.wijgrid.js" type="text/javascript"></script> |
---|
28 | |
---|
29 | <style type="text/css"> |
---|
30 | .wijmo-wijgrid .wijmo-wijcombobox-wrapper |
---|
31 | { |
---|
32 | float: none; |
---|
33 | } |
---|
34 | </style> |
---|
35 | |
---|
36 | <script id="scriptInit" type="text/javascript"> |
---|
37 | $(document).ready(function () { |
---|
38 | var $element = $("#demo").wijgrid({ |
---|
39 | allowEditing: true, |
---|
40 | allowKeyboardNavigation: true, |
---|
41 | allowColSizing: true, |
---|
42 | highlightCurrentCell: true, |
---|
43 | selectionMode: "none", |
---|
44 | afterCellEdit: afterCellEdit, |
---|
45 | afterCellUpdate: afterCellUpdate, |
---|
46 | beforeCellEdit: beforeCellEdit, |
---|
47 | beforeCellUpdate: beforeCellUpdate, |
---|
48 | |
---|
49 | data: [ |
---|
50 | { Player: "Player0", Position: "GK", Acquired: 2001 }, |
---|
51 | { Player: "Player1", Position: "RM", Acquired: 2004 }, |
---|
52 | { Player: "Player2", Position: "GK", Acquired: 2009 }, |
---|
53 | { Player: "Player3", Position: "AM", Acquired: 2008 }, |
---|
54 | { Player: "Player4", Position: "RW", Acquired: 2008 }, |
---|
55 | { Player: "Player5", Position: "CF", Acquired: 2007 } |
---|
56 | ] |
---|
57 | }); |
---|
58 | |
---|
59 | $("#log").html(dump($element.wijgrid("data"))); |
---|
60 | }); |
---|
61 | |
---|
62 | var positions = [ |
---|
63 | { label: "GK", value: "GK" }, |
---|
64 | { label: "SW", value: "SW" }, |
---|
65 | { label: "LB", value: "LB" }, |
---|
66 | { label: "CB", value: "CB" }, |
---|
67 | { label: "RB", value: "RB" }, |
---|
68 | { label: "DM", value: "DM" }, |
---|
69 | { label: "LM", value: "LM" }, |
---|
70 | { label: "CM", value: "CM" }, |
---|
71 | { label: "RM", value: "RM" }, |
---|
72 | { label: "AM", value: "AM" }, |
---|
73 | { label: "LW", value: "LW" }, |
---|
74 | { label: "SS", value: "SS" }, |
---|
75 | { label: "RW", value: "RW" }, |
---|
76 | { label: "CF", value: "CF" } |
---|
77 | ]; |
---|
78 | |
---|
79 | function beforeCellEdit(e, args) { |
---|
80 | switch (args.cell.column().dataKey) { |
---|
81 | case "Position": |
---|
82 | $("<input />") |
---|
83 | .val(args.cell.value()) |
---|
84 | .appendTo(args.cell.container().empty()) |
---|
85 | .wijcombobox({ |
---|
86 | data: $.map($.extend(true, [], positions), function (item, index) { |
---|
87 | if (item.value === args.cell.value()) { |
---|
88 | item.selected = true; |
---|
89 | } |
---|
90 | |
---|
91 | return item; |
---|
92 | }), |
---|
93 | isEditable: false |
---|
94 | }); |
---|
95 | |
---|
96 | args.handled = true; |
---|
97 | |
---|
98 | break; |
---|
99 | |
---|
100 | case "Acquired": |
---|
101 | $("<input />") |
---|
102 | .width("100%") |
---|
103 | .appendTo(args.cell.container().empty()) |
---|
104 | .wijinputnumber({ |
---|
105 | decimalPlaces: 0, |
---|
106 | showSpinner: true, |
---|
107 | value: args.cell.value() |
---|
108 | }) |
---|
109 | .focus(); |
---|
110 | |
---|
111 | args.handled = true; |
---|
112 | |
---|
113 | break; |
---|
114 | } |
---|
115 | } |
---|
116 | |
---|
117 | function beforeCellUpdate(e, args) { |
---|
118 | switch (args.cell.column().dataKey) { |
---|
119 | case "Position": |
---|
120 | args.value = args.cell.container().find("input").val(); |
---|
121 | break; |
---|
122 | |
---|
123 | case "Acquired": |
---|
124 | var $editor = args.cell.container().find("input"), |
---|
125 | value = $editor.wijinputnumber("getValue"), |
---|
126 | curYear = new Date().getFullYear(); |
---|
127 | |
---|
128 | if (value < 1990 || value > curYear) { |
---|
129 | $editor.addClass("ui-state-error") |
---|
130 | |
---|
131 | alert("value must be between 1990 and " + curYear); |
---|
132 | |
---|
133 | $editor.focus(); |
---|
134 | |
---|
135 | return false; |
---|
136 | } |
---|
137 | |
---|
138 | args.value = value; |
---|
139 | break; |
---|
140 | } |
---|
141 | } |
---|
142 | |
---|
143 | function afterCellUpdate(e, args) { |
---|
144 | $("#log").html(dump($("#demo").wijgrid("data"))); |
---|
145 | } |
---|
146 | |
---|
147 | function afterCellEdit(e, args) { |
---|
148 | switch (args.cell.column().dataKey) { |
---|
149 | case "Position": |
---|
150 | args.cell.container().find("input").wijcombobox("destroy"); |
---|
151 | break; |
---|
152 | |
---|
153 | case "Acquired": |
---|
154 | args.cell.container().find("input").wijinputnumber("destroy"); |
---|
155 | break; |
---|
156 | } |
---|
157 | } |
---|
158 | |
---|
159 | function dump(d2array) { |
---|
160 | var str = "<table class=\"ui-widget ui-widget-content\" rules=\"all\">" + |
---|
161 | "<caption class=\"ui-widget-header\">dump</caption>\n"; |
---|
162 | |
---|
163 | for (var i = 0, rowLen = d2array.length; i < rowLen; i++) { |
---|
164 | var row = d2array[i]; |
---|
165 | |
---|
166 | str += "<tr>"; |
---|
167 | |
---|
168 | for (var key in row) { |
---|
169 | if (row.hasOwnProperty(key)) { |
---|
170 | str += "<td>" + row[key] + "</td>"; |
---|
171 | } |
---|
172 | } |
---|
173 | |
---|
174 | str += "</tr>\n"; |
---|
175 | } |
---|
176 | |
---|
177 | return str + "</table>"; |
---|
178 | } |
---|
179 | </script> |
---|
180 | </head> |
---|
181 | <body class="demo-single"> |
---|
182 | <div class="container"> |
---|
183 | <div class="header"> |
---|
184 | <h2> |
---|
185 | Custom Editors</h2> |
---|
186 | </div> |
---|
187 | <div class="main demo"> |
---|
188 | <!-- Begin demo markup --> |
---|
189 | <table id="demo"></table> |
---|
190 | <div id="log">log</div> |
---|
191 | <!-- End demo markup --> |
---|
192 | <div class="demo-options"> |
---|
193 | <!-- Begin options markup --> |
---|
194 | |
---|
195 | <!-- End options markup --> |
---|
196 | </div> |
---|
197 | </div> |
---|
198 | <div class="footer demo-description"> |
---|
199 | <p> |
---|
200 | This sample shows how to customize the editors using the following wijgrid events: <b>beforeCellEdit</b>, |
---|
201 | <b>beforeCellUpdate</b>, <b>afterCellUpdate</b> and <b>afterCellEdit</b>. |
---|
202 | </p> |
---|
203 | </div> |
---|
204 | </div> |
---|
205 | </body> |
---|
206 | </html> |
---|