首页 > 其他分享 >xt中combobox在grid显示问题

xt中combobox在grid显示问题

时间:2023-06-13 10:03:22浏览次数:39  
标签:name form combobox myCategory value record grid data xt


xt中combobox在grid显示问题

问题描述:我在edit grid中嵌一个combox,combox的下拉单是文字的,但是提交时用数字代码表示。但是我的grid只显示数字代码,不显示对应的文字.
嘿嘿,这可问题对于我这样的初学者讲根本就不懂,呵呵,google了一下,找到解决办法,嘿嘿,不过我只是试验了一种成功,其它的要么就不成功,要么就看不懂,呵呵,我现在先把我做成功的代码贴出来(从网上找到,大家不要介意):
第一种方案(我做成功了,嘿嘿)

首先,我的combobox是使用本地的字典表,即在namespace里定义的数据.数据结构为:

Ext.data.status = [ 

['1', 'Yes'], 

['0', 'No'] 

]




我要实现的是在grid中显示字典表里对应的value,而不是code.需要有下面几个步骤:


1.定义ds,即引入字典表中的数据

var statusDS = new Ext.data.SimpleStore({ //通过字典表获得用户使用状态数据源 

 fields: ['code', 'value'], 

 data:Ext.data.status //这里对应我在字典表里定义的类型名称 

 });



2.在grid相应列中加入渲染,即修改ColumnModel某列属性,红色字体部分是核心代码

{ 

 header: '<s:text name="com.label.username"/>', 

 dataIndex: 'userName', 

 width: 90, 

 align: 'center' 

 },{ 

 header: '<s:text name="com.label.authority"/>', 

 dataIndex: 'userAuthority', 

 width: 60, 

 align: 'center', 

 editor: new Ext.form.ComboBox({ 

 id:'statusCmb', //为combobox定义一个ID,必须的 

 hiddenName:'', 

 store: statusDS, //引入ds 

 displayField:'value', //值 

 valueField:'code', //代码 

 editable:false, 

 mode: 'local', 

 triggerAction: 'all' 

 }), 

 renderer: function(value, cellmeta, record) { 


 //通过匹配value取得ds索引 

 var index = statusDS.find(Ext.getCmp('statusCmb').valueField,value); 


 //通过索引取得记录ds中的记录集 

 var record = statusDS.getAt(index); 


 //返回记录集中的value字段的值 

 return record.data.value;//注意这个地方的value是上面displayField中的value,因为我水平低,搞了好长时间 才明白 ,呵呵 

 } 

 },{ 

 header: '<s:text name="com.label.email"/>', 

 dataIndex: 'email', 

 width: 150, 

 align: 'center' 

 }



以上的代码只是根据我个人情况实现的,大家应用到自己程序时可能会有变动,还得随机应变啊

这是人家的后来我需要在grid中显示出上面的效果自写改了一下,把代码发上来:

//物料数据源 


 var materialDs = new Ext.data.JsonStore({ 


 fields: ['matId','matName'], 


 url: '../combobox.do?action=getBaseMaterialComboBox', 


 autoLoad: true 


 }) 


//初始化物料名称Combobox 


 var materialCombo = new Ext.form.ComboBox({ 


 name: 'matName', 


 fieldLabel: '物料名称', 


 store:materialDs, 


 valueField: 'matId', 


 displayField: 'matName', 


 typeAhead: true, 


 mode: 'local',//这个意思 我一直不明白,呵呵。 


 triggerAction: 'all', 


 emptyText: 'Select a inputNum name..', 


 selectOnFocus: true, 


 editable: false, 


 allowBlank: false 


 }) 


{header: '物料名称',dataIndex: 'matId',width: 170,sortable: true,renderer:function(value,cellmeta,record){ 


 var index =materialDs.find(materialCombo.valueField,value); 


 var record = materialDs.getAt(index); 


 return record.data.matName; 


 }},


这种方式我不知道好不好,但我没办法,只能这样用,因为我只能想到这种方法。有更好的方法大家可以告诉我,谢谢。

第二种方案(这种方案比较简单,学习一下,呵呵):

来源:http://www.iteye.com/topic/157067

{header:'单位',dataIndex:'Unit',sortable:true,width: 80,renderer:function(value){return value==1?'西药':'重要';}, 

editor: new Ext.form.ComboBox({ 

displayField:'kind',emptyText:'请选择', 

valueField:'abbr', 

selectOnFocus:true, 

triggerAction: 'all', 

mode: 'local', 

store: new Ext.data.SimpleStore({ 

fields: ['abbr', 'kind'], 

data:[[1,'西药'],[2,'中药']] 

}), 

lazyRender:true 

})},



第三种方式(是我从一个论坛上找的一个留言,我没试验,不知道能否成功,呵呵):

renderer:function(value){ return t_value[value];//值对应的显示值数组}, 

listeners:{select:function(combo, record,index){ //回显值数组 

t_value[record.data.t_valueId] = record.data.t_valueName; } },



第四种方式 (也是我从上面的论坛中找的,这个很乱,我把上面一个大侠的留言给贴上吧,呵呵):

1、呵呵,这个问题其实很好办的哈。因为你要手动设置combox的值,给你看一个例子:

writePanel.fp.form.load({ 

waitMsg:"$!{lang.get('Loading')}", 

url:this.baseUrl+"?cmd=read&id="+id, 

success:function(form){ 

if(record.data.myCategory){ 

writePanel.fp.form.findField("myCategory").setValue(record.data.myCategory.id); 

writePanel.fp.form.findField("myCategory").el.dom.value=record.data.myCategory.name;//text 

var oEditor = FCKeditorAPI.GetInstance('content') ; 

if(oEditor)oEditor.SetHTML(form.findField("content").getValue()); 

} 

} 

});


上面的程序是从后台加载表单数据到FormPanel中,由于combox的处理比较特殊,需要通过下面两句来给他手动赋值:

writePanel.fp.form.findField("myCategory").setValue(record.data.myCategory.id); 

writePanel.fp.form.findField("myCategory").el.dom.value=record.data.myCategory.name;//text



2、我的意思是,你在修改的时候,得手动设置一下combox的值。

对于你的情况,由于返回的record.data.name = '2' ,那么你就要先在[[1,a],[2,b][3,c]]这个数组中查询,查询2这个值对应的显示文本,也就是查到B。然后你再调用下面的语句:

cmb.setValue(2); 

cmb.el.dom.value=B;


这就就对了!
3、

{header:'用户名',dataIndex:'name',renderer:function(val){ 

//在这里return通过val(就是那个id)获取的name的值 

return combostore.getAt(combostore.find('id',val)).data.name; 

}}


4、
目前这个问题已经解决了

girdpanel.cm加上了一个 

renderer: function(value, p, record) { 

return value.name; 

}

标签:name,form,combobox,myCategory,value,record,grid,data,xt
From: https://blog.51cto.com/u_16087012/6467246

相关文章

  • DataGridViewCheckBoxCell单元格点击后立即更改选中状态
     PrivateSubDataGridView1_CellMouseClick(senderAsObject,eAsDataGridViewCellMouseEventArgs)HandlesDataGridView1.CellMouseClickIfDataGridView1(e.ColumnIndex,e.RowIndex).GetType=GetType(WinForms.DataGridViewCheckBoxCell)Then......
  • java的`pageContext`对象`attributes`的属性用法和原理
    在Java中,pageContext.setAttribute("name","liulongteng",SESSION)方法用于在页面上下文(pageContext)中设置属性。属性名为"name",属性值为"liulongteng",并且属性的作用范围为SESSION(会话级别)。在JSP中,页面上下文对象(pageContext)是一个重要的对象,它提供了对其他域(如请求、会......
  • 定位调试两手抓,报错真的不可怕 | MindSpore报错调试宝典(二):网络构建与训练类报错之cont
    上一期我们讲解了数据加载与处理类报错如何调试解决,今天给大家继续带来网络构建与训练类报错中的context配置问题,本期仍将以案例的形式展开,详细讲解mindspore.set_context算子的使用方法以及配置方法,希望大家在后续使用context算子过程中可以轻松解决相关的报错问题!同时也欢迎大家......
  • HDU 5491 The Next(构造)
    题意:给你D(D<=2^31),s1和s2,求比D大的第一个数并且这个数二进制1的数目在[s1,s2]范围里,输出这个数思路:直接从D+1算起,如果1的数目>s2那就跳过,如果s1>sum1,那么就将这个数的低位s1-sum1个0补成1,那么就是最优的了#include<bits/stdc++.h>usingnamespacestd;#defineLLlonglongint......
  • SM2259XT2开卡长江TAS,附SM2259XT2开卡工具,我更喜欢MAS1102量产工具
    闲的没事干,测一下59xt2+TAS,用的公版主控板,跳线按官方的来,电压给1v2,vcc不用管默认,都能用。随便焊一下,ce齐全,单颗2ce128G,单帖分布2ch/1ce。跑个rdt看看,DDR800。开卡工具是从量产部落下载的YMTC_TAS开卡工具。RDTMaxECC均在十几二十,全新自封片,还算不错体质。直接开卡,轻松开出来,容量aut......
  • [重读经典论文] ConvNeXt——卷积网络又行了
    参考博客:ConvNeXt网络详解参考视频:13.1ConvNeXt网络讲解ConvNeXt其实就是面向SwinTransformer的架构进行炼丹,最后获得一个比SwinTransformer还要牛逼的网络。 ......
  • nginx-gridfs Benchmarking Raw Results
    RawDataSpreadsheetwithtestresults(ODFformat)Thesefollowinglinksshowtherawoutputfromthebenchmarkingutilities.GridFSOverNetworkThistestscenarioshowsperformanceforHTTPrequestsoveragigabitEthernetLANconnection.MongoDBand......
  • odoo context上下文用法总结
    环境odoo-14.0.post20221212.tarcontext用法总结获取上下文>>>self.env.context#返回字典数据,等价于self._context{'lang':'en_US','tz':'Europe/Brussels'}>>>self._context{'lang':'en_US',&......
  • WPF入门教程系列二十八 ——DataGrid使用示例MVVM模式(5)
    WPF入门教程系列目录WPF入门教程系列二——Application介绍WPF入门教程系列三——Application介绍(续)WPF入门教程系列四——Dispatcher介绍WPF入门教程系列五——Window介绍WPF入门教程系列十一——依赖属性(一)WPF入门教程系列十五——WPF中的数据绑定(一)  添加Cl......
  • jmeter005:察看结果树之以(txt、css、html、json)格式查看结果
     txt:这里就不用说了,已txt文件展示,形式比较单一,但也是用的比较多的 css:css取样测试其实与txt也差不多,区别就是比txt多了“选择器”筛选 html:html有三种模式,(HTML以基本的界面形式展示数据)、(HTMLSourceFormatted会下载图像来展示)、(HTMLSourceformatted:如果选择了HTML......