1 <html><head><title>../roojs1/Roo/form/GridField.js</title><link rel="stylesheet" type="text/css" href="../../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">//<script type="text/javascript">
3 * @class Roo.form.GridField
4 * @extends Roo.form.Field
5 * Embed a grid (or editable grid into a form)
8 * This embeds a grid in a form, the value of the field should be the json encoded array of rows
10 * xgrid.store = Roo.data.Store
11 * xgrid.store.proxy = Roo.data.MemoryProxy (data = [] )
12 * xgrid.store.reader = Roo.data.JsonReader
16 * Creates a new GridField
17 * @param {Object} config Configuration options
19 </span><span class="jsdoc-var">Roo.form.GridField </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">){
20 </span><span class="jsdoc-var">Roo.form.GridField.superclass.constructor.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">);
24 </span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.form.GridField</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.form.Field</span><span class="jsdoc-syntax">, {
25 </span><span class="jsdoc-comment">/**
26 * @cfg {Number} width - used to restrict width of grid..
28 </span><span class="jsdoc-var">width </span><span class="jsdoc-syntax">: 100,
29 </span><span class="jsdoc-comment">/**
30 * @cfg {Number} height - used to restrict height of grid..
32 </span><span class="jsdoc-var">height </span><span class="jsdoc-syntax">: 50,
33 </span><span class="jsdoc-comment">/**
34 * @cfg {Object} xgrid (xtype'd description of grid) { xtype : 'Grid', dataSource: .... }
38 </span><span class="jsdoc-var">xgrid </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
39 </span><span class="jsdoc-comment">/**
40 * @cfg {String/Object} autoCreate A DomHelper element spec, or true for a default element spec (defaults to
41 * {tag: "input", type: "checkbox", autocomplete: "off"})
43 // defaultAutoCreate : { tag: 'div' },
44 </span><span class="jsdoc-var">defaultAutoCreate </span><span class="jsdoc-syntax">: { </span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'input'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">type</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'hidden'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">autocomplete</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'new-password'</span><span class="jsdoc-syntax">},
45 </span><span class="jsdoc-comment">/**
46 * @cfg {String} addTitle Text to include for adding a title.
48 </span><span class="jsdoc-var">addTitle </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
49 </span><span class="jsdoc-comment">//
50 </span><span class="jsdoc-var">onResize </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
51 </span><span class="jsdoc-var">Roo.form.Field.superclass.onResize.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">);
54 </span><span class="jsdoc-var">initEvents </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
55 </span><span class="jsdoc-comment">// Roo.form.Checkbox.superclass.initEvents.call(this);
58 </span><span class="jsdoc-syntax">},
61 </span><span class="jsdoc-var">getResizeEl </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
62 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.wrap</span><span class="jsdoc-syntax">;
65 </span><span class="jsdoc-var">getPositionEl </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
66 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.wrap</span><span class="jsdoc-syntax">;
69 </span><span class="jsdoc-comment">// private
70 </span><span class="jsdoc-var">onRender </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ct</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">position</span><span class="jsdoc-syntax">){
72 </span><span class="jsdoc-var">this.style </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.style </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-string">'overflow: hidden; border:1px solid #c3daf9;'</span><span class="jsdoc-syntax">;
73 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">style </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.style</span><span class="jsdoc-syntax">;
74 </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">this.style</span><span class="jsdoc-syntax">;
76 </span><span class="jsdoc-var">Roo.form.GridField.superclass.onRender.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ct</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">position</span><span class="jsdoc-syntax">);
77 </span><span class="jsdoc-var">this.wrap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el.wrap</span><span class="jsdoc-syntax">({</span><span class="jsdoc-var">cls</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">}); </span><span class="jsdoc-comment">// not sure why ive done thsi...
78 </span><span class="jsdoc-var">this.viewEl </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.wrap.createChild</span><span class="jsdoc-syntax">({ </span><span class="jsdoc-var">tag</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'div' </span><span class="jsdoc-syntax">});
79 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">style</span><span class="jsdoc-syntax">) {
80 </span><span class="jsdoc-var">this.viewEl.applyStyles</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">style</span><span class="jsdoc-syntax">);
82 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.width</span><span class="jsdoc-syntax">) {
83 </span><span class="jsdoc-var">this.viewEl.setWidth</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.width</span><span class="jsdoc-syntax">);
85 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.height</span><span class="jsdoc-syntax">) {
86 </span><span class="jsdoc-var">this.viewEl.setHeight</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.height</span><span class="jsdoc-syntax">);
88 </span><span class="jsdoc-comment">//if(this.inputValue !== undefined){
89 //this.setValue(this.value);
92 </span><span class="jsdoc-var">this.grid </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.grid</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">this.xgrid.xtype</span><span class="jsdoc-syntax">](</span><span class="jsdoc-var">this.viewEl</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.xgrid</span><span class="jsdoc-syntax">);
95 </span><span class="jsdoc-var">this.grid.render</span><span class="jsdoc-syntax">();
96 </span><span class="jsdoc-var">this.grid.getDataSource</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'remove'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.refreshValue</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
97 </span><span class="jsdoc-var">this.grid.getDataSource</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'update'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.refreshValue</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
98 </span><span class="jsdoc-var">this.grid.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'afteredit'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.refreshValue</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
103 </span><span class="jsdoc-comment">/**
104 * Sets the value of the item.
105 * @param {String} either an object or a string..
107 </span><span class="jsdoc-var">setValue </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">){
108 </span><span class="jsdoc-comment">//this.value = v;
109 </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">v </span><span class="jsdoc-syntax">|| []; </span><span class="jsdoc-comment">// empty set..
110 // this does not seem smart - it really only affects memoryproxy grids..
111 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.grid </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">this.grid.getDataSource</span><span class="jsdoc-syntax">() && </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">) {
112 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ds </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.grid.getDataSource</span><span class="jsdoc-syntax">();
113 </span><span class="jsdoc-comment">// assumes a json reader..
114 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">data </span><span class="jsdoc-syntax">= {}
115 </span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">ds.reader.meta.root </span><span class="jsdoc-syntax">] = </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'string' </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">Roo.decode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">;
116 </span><span class="jsdoc-var">ds.loadData</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">data</span><span class="jsdoc-syntax">);
118 </span><span class="jsdoc-comment">// clear selection so it does not get stale.
119 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.grid.sm</span><span class="jsdoc-syntax">) {
120 </span><span class="jsdoc-var">this.grid.sm.clearSelections</span><span class="jsdoc-syntax">();
123 </span><span class="jsdoc-var">Roo.form.GridField.superclass.setValue.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">v</span><span class="jsdoc-syntax">);
124 </span><span class="jsdoc-var">this.refreshValue</span><span class="jsdoc-syntax">();
125 </span><span class="jsdoc-comment">// should load data in the grid really....
126 </span><span class="jsdoc-syntax">},
128 </span><span class="jsdoc-comment">// private
129 </span><span class="jsdoc-var">refreshValue</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
130 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">val </span><span class="jsdoc-syntax">= [];
131 </span><span class="jsdoc-var">this.grid.getDataSource</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">) {
132 </span><span class="jsdoc-var">val.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">r.data</span><span class="jsdoc-syntax">);
134 </span><span class="jsdoc-var">this.el.dom.value </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.encode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">val</span><span class="jsdoc-syntax">);
140 });</span></code></body></html>