Ext中combobox在Grid里显示问题

Ext的Grid中使用combobox做为编辑控件时,遇到在combobox中选择了相应的选项时(displayField),在grid中却显示了valueField值。现解决如下:

图示:

js代码:


  1      var  grid;
  2      function  ready(queryCondition)
  3      {
  4          var  pageSize  =   150 ;
  5          var  queryConditionTemplate  =  document.getElementById( " hid " ).value;
  6          var  url  =   " ../AjaxFactory/AjaxGridData.aspx?cln=BindCommandTemplate&orderField=FGID&pagesize= "   +  pageSize + " &orderType=asc&queryConditionTemplate= " + queryConditionTemplate;
  7         
  8          var  url1 =   " ../AjaxFactory/AjaxGridData.aspx?cln1=BindTemplateGroup&orderField=DMCOD&orderType=asc&projectID= " + fatherID;
  9          var  url2  =   " ../AjaxFactory/AjaxGridData.aspx?cln2=BindG050&orderField=DMCOD&orderType=asc " ;
 10          // var store;
 11          var  comStore1;
 12          var  comStore2;
 13          var  storeMapping;
 14          var  addCategory;
 15          var  afterEdit;
 16          var  defaultStore;
 17          var  specoalStore;
 18        
 19         storeMapping = [ " FGID " , " COMMANDID " , " PARENTNAME " , " FUNCTIONIDNAME " , " NAME " , " GROUPNAME " , " HANDLESNAME " ];
 20         
 21          // grid 数据源
 22         store  =   new  Ext.data.Store( {
 23         proxy: new  Ext.data.HttpProxy( {
 24             url:url
 25         }
),
 26         reader: new  Ext.data.JsonReader( {
 27             root: ' data ' ,
 28             totalProperty:  ' totalCount ' ,
 29             fields:
 30             [
 31                  ' FGID ' , ' COMMANDID ' , ' PARENTNAME ' , ' SONNAME ' , ' NAME ' , ' FUNCTIONID ' , ' GROUPNAME ' , ' HANDLESNAME '
 32             ]
 33         }
),    
 34         remoteSort: true
 35         }
);    
 36          // 模板组
 37         comStore1  =   new  Ext.data.Store( {
 38                         proxy: new  Ext.data.HttpProxy( {url:url1} ),
 39                         reader:  new  Ext.data.JsonReader( {
 40                         root: ' data ' ,
 41                         totalProperty:  ' totalCount ' ,
 42                         fields:
 43                         [ ' GROUPID ' , ' GROUP_NAME ' ]
 44                         }
)
 45                     }
),
 46         comStore1.load();
 47          // 读写
 48         comStore2  =   new  Ext.data.Store( {
 49                         proxy: new  Ext.data.HttpProxy( {url:url2} ),
 50                         reader:  new  Ext.data.JsonReader( {            
 51                         root: ' data ' ,
 52                         totalProperty:  ' totalCount ' ,
 53                         fields:
 54                         [ ' DMCOD ' , ' DMCPT ' ]
 55                         }
)
 56                     }
),
 57             comStore2.load();
 58         
 59        
 60          var  cm = new  Ext.grid.ColumnModel([        
 61          new  Ext.grid.RowNumberer(),
 62          {header: " 角色编号 " ,align: ' center ' ,sortable:  false ,dataIndex: ' FGID ' ,hidden: true } ,
 63          {header: " 命令编号 " ,align: ' center ' ,sortable:  false ,dataIndex: ' COMMANDID ' ,hidden: true } ,
 64          {header: " 子系统 " ,align: ' center ' ,sortable:  false ,dataIndex: ' PARENTNAME ' } ,
 65          {header: " 模块 " ,align: ' center ' ,sortable:  false ,dataIndex: ' SONNAME ' } ,
 66          {header: " 功能 " ,align: ' center ' ,sortable:  false ,dataIndex: ' NAME ' } ,
 67          {
 68                 header: " 模板组 " ,
 69                 dataIndex: " GROUPNAME " ,
 70                 align: ' center ' ,
 71                 editor: new  Ext.form.ComboBox( {
 72                     id: ' termtype ' ,
 73                     name: ' termtype ' ,                    
 74                     readOnly: true ,
 75                     fieldLabel:  ' 模板组 ' ,    
 76                     hiddenName: ' id ' ,
 77                     store: comStore1,
 78                     displayField: ' GROUP_NAME ' ,
 79                     valueField: ' GROUPID ' ,                    
 80                     typeAhead:  true ,
 81                     mode:  ' local ' ,
 82                     triggerAction:  ' all ' ,
 83                     emptyText: ' 请选择 ' ,
 84                     selectOnFocus: true
 85                     }
),
 86                     renderer:  function (value, cellmeta, record) 
 87                      {
 88                          // 通过匹配value取得ds索引
 89                          var  index  =  comStore1.find(Ext.getCmp( ' termtype ' ).valueField,value);
 90                          // 通过索引取得记录ds中的记录集
 91                          var  record  =  comStore1.getAt(index);
 92                          // 返回记录集中的value字段的值
 93                          var  returnvalue  =   "" ;
 94                          if  (record) 
 95                          {
 96                             returnvalue  =  record.data.GROUP_NAME;
 97                         }

 98                          return  returnvalue; // 注意这个地方的value是上面displayField中的value
 99                      }

100             }
,
101              {
102                 header: " 操作性 " ,
103                 dataIndex: " HANDLESNAME " ,
104                 align: ' center ' ,
105                 editor: new  Ext.form.ComboBox( {
106                     id: ' termtype1 ' ,
107                     name: ' termtype1 ' ,
108                     readOnly: true ,                    
109                     fieldLabel:  ' 操作性 ' ,
110                     hiddenName: ' id ' ,
111                     store: comStore2,
112                     displayField: ' DMCPT ' ,
113                     valueField: ' DMCOD ' ,
114                     
115                     typeAhead:  true ,
116                     mode:  ' remote ' ,
117                     triggerAction:  ' all ' ,
118                     emptyText: ' 请选择 ' ,
119                     selectOnFocus: true
120                 }
),
121                     renderer:  function (value, cellmeta, record) 
122                      {
123                          // 通过匹配value取得ds索引
124                          var  index  =  comStore2.find(Ext.getCmp( ' termtype1 ' ).valueField,value);
125                          // 通过索引取得记录ds中的记录集
126                          var  record  =  comStore1.getAt(index);
127                          // 返回记录集中的value字段的值
128                          var  returnvalue  =   "" ;
129                          if  (record) 
130                          {
131                             returnvalue  =  record.data.DMCPT;
132                         }

133                          return  returnvalue; // 注意这个地方的value是上面displayField中的value
134                      }

135             }

136         ]);    
137         cm.defaultSortable  =   true ;
138         
139         grid = new  Ext.grid.EditorGridPanel( {
140                 id: " topicCategoryGrid " ,    
141                  store:store,
142                   cm:cm, 
143                 loadMask:  true ,
144                 clicksToEdit: 1 ,
145                 renderTo: ' authorize '
146                 trackMouseOver: true ,
147                 autoShow :  true ,
148                 autoScroll:  true ,
149                 loadMask: {msg: " 数据加载中,请稍等 " } ,
150                 frame: true ,
151                 height: window.screen.availHeight  -   200 , // 176,
152                 width: window.screen.availWidth  -  s_widths,
153                 viewConfig: {forceFit: true } ,    
154                  region: " center " ,
155                  bbar: new  Ext.PagingToolbar( {
156                 pageSize: 150 ,
157                 store:store,
158                 displayInfo: true ,
159                 displayMsg: ' 当前显示 {0} - {1}条记录 /共 {2}条记录 ' ,
160                 emptyMsg: " 没有数据 "
161                 }
)
162         }
);
163         grid.on( " afteredit " ,
164              function  (obj)
165              {
166                  var  r = obj.record;
167                  var  l  =  obj.field;
168                  var  uFGID = r.get( " FGID " );
169                  var  uCOMMANDID  =  r.get( " COMMANDID " );    
170                  var  uGROUPNAME  =  Ext.getCmp( " termtype " ).getValue();
171                  var  uHANDLESNAME  =  Ext.getCmp( " termtype1 " ).getValue();
172                  var  today  =   new  Date().getTime();
173                 Ext.Ajax.request( {
174                 url: " ../AjaxFactory/AjaxGridData.aspx?cln=UpdateRoleTemplate&orderField=FGID&orderType=asc&da= " + today,
175                 method: ' POST ' ,
176                 params:  {
177                     uFGID:uFGID,    
178                     uCOMMANDID:uCOMMANDID,
179                     uGROUPNAME:uGROUPNAME,
180                     uHANDLESNAME:uHANDLESNAME,
181                     l:l
182                 }
,
183                 success: function (response) {
184                  // store.load();
185                 }
,
186                 failure: function (response) {
187                 Ext.MessageBox.alert( " 温馨提示 " " 请求失败! " );
188                 }
,
189                 scope: this
190                 }
);
191             }
,
192              this );
193
194             grid.getStore().load( {
195             params:  {
196                 start:  0 ,
197                 limit:  12
198             }

199         }
);  
200     }

201          // 自适应
202          function  GridOnReSize(s_widths)
203          {
204             grid.setWidth(window.screen.availWidth  -  s_widths);    
205             grid.setHeight(window.screen.availHeight  -   200 );
206         }
  
207     

关键代码如下:


 1                     renderer:  function (value, cellmeta, record) 
 2                      {
 3                          // 通过匹配value取得ds索引
 4                          var  index  =  comStore1.find(Ext.getCmp( ' termtype ' ).valueField,value);
 5                          // 通过索引取得记录ds中的记录集
 6                          var  record  =  comStore1.getAt(index);
 7                          // 返回记录集中的value字段的值
 8                          var  returnvalue  =   "" ;
 9                          if  (record) 
10                          {
11                             returnvalue  =  record.data.GROUP_NAME;
12                         }

13                          return  returnvalue; // 注意这个地方的value是上面displayField中的value
14                      }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值