使用EXT实现ComboBox多列下拉列表

在C/S的开发中,用户在选择的时候一般会要求提供多列下拉列表,以便更好的参考所选择资料的正确性。但是EXT似乎不支持这个功能。但是可不可以通过其它方式达到这一效果呢?本人经过一天的尝试,终于达到的相关的效果,唯一美中不足的是,ComboBox在选择后,value和text好象有问题,只能显示value.好了,不说了,看代码:

var createStockDropDown=function(id){
var stockname="";
var itemno="";
var spec="";
var innerId="";
var tpl='<tpl for="."><div style="height:200px"><div id="'+id+'"></div></div></tpl>'
this.StockDropDown = new Ext.form.ComboBox({
store:new Ext.data.SimpleStore({fields:['value','text'],data:[['','']]}),
editable:false,
mode: 'local',
listWidth:450,
triggerAction:'all',
maxHeight: 300,
valueField:'value',
displayField:'text',
tpl: tpl,
selectedClass:'',
onSelect:Ext.emptyFn
});

this.StockDropDown.getItemNo=function()
{
return itemno;
};

this.StockDropDown.getStockName=function()
{
return stockname;
};
this.StockDropDown.getSpec=function()
{
return spec;
};

var StockDropDowncm = new Ext.grid.ColumnModel([
{header:'编号',dataIndex:'id'},
{header:'物料编号',dataIndex:'itemno'},
{header:'物料名称',dataIndex:'stockname'},
{header:'物料规格',dataIndex:'spec'},
{header:'单位',dataIndex:'unit'}
]);
var StockDropDownds = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({url:'resp/stockDropDown.jsp'}),
reader: new Ext.data.JsonReader({
totalProperty:'totalProperty',
root:'root'},
[
{name: 'id'},
{name: 'itemno'},
{name: 'stockname'},
{name: 'spec'},
{name: 'unit'}
])
});

var StockDropDownPanel=new Ext.grid.GridPanel({
ds: StockDropDownds,
cm: StockDropDowncm,
sm: new Ext.grid.RowSelectionModel({singleSelect:true}),
title:'',
region:'center',
height:300,
bbar:new Ext.PagingToolbar({
pageSize:20,
store:StockDropDownds,
displayInfo:false,
displayMsg:'显示第{1}条记录,一共有{2}条',
emptyMsg:'没有记录'
})
});
StockDropDown.on("expand",function(){
StockDropDownPanel.render(id);
StockDropDownds.load({params:{start:0,limit:20}});
});

StockDropDownPanel.on('rowclick', function(grid, rowIndex, event) {
var sm=grid.getSelectionModel();
var record=sm.getSelected();
itemno=record.get("itemno");
stockname=record.get("stockname");
spec=record.get("spec");
innerId=record.get("id");
StockDropDown.setValue(itemno);
//此处想用setRawValue设置StockDropDown的值是innerId,显示为itemno,但是不成功。有无人知道怎么回事?
//StockDropDown.setRowValue(itemno);
//StockDropDown.setValue(innerId);
StockDropDown.collapse();
});
return StockDropDown;
};

//call

var std=createStockDropDown("StockDropDownID");
var sd=createSupplierDropDown("SupplierDropDownID");
var poplancm = new Ext.grid.ColumnModel([
{header:'编号',dataIndex:'id',editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:true,disabled:true}))},
{header:'物料编号',dataIndex:'itemno',editor:std},
{header:'物料名称',dataIndex:'itemname',editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:false,disabled:true}))},
{header:'物料规格',dataIndex:'spec',editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:false,disabled:true}))},
{header:'供应商名称',dataIndex:'supplier',editor:sd},
{header:'每个用量',dataIndex:'perqty',editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:false,disabled:false}))},
{header:'总用量',dataIndex:'totalqty',editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:false,disabled:true}))},
{header:'计划用量',dataIndex:'planqty',editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:false,disabled:false}))},
{header:'单价',dataIndex:'price',editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:false,disabled:true}))},
{header:'成本',dataIndex:'cost',editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:false,disabled:true}))},
{header:'仓存可用数',dataIndex:'stockqty',editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:false,disabled:true}))},
{header:'需订货数量',dataIndex:'orderqty',editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:false,disabled:true}))},
{header:'总金额',dataIndex:'grandtotal',editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:false,disabled:true}))},
{header:'交货日期',dataIndex:'deliverydate',editor:new Ext.grid.GridEditor(new Ext.form.DateField({allowBlank:false,disabled:false}))},
{header:'税率(%)',dataIndex:'tax',editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:false,disabled:false}))},
{header:'备注',dataIndex:'description',editor:new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank:false,disabled:false}))}
]);

//加入事件侦听
std.on("collapse",function(){
var sm1=poplangrid.getSelectionModel();
var cell1=sm1.getSelectedCell();
var rec1=poplands.getAt(cell1[0]);
rec1.set("itemname",std.getStockName());
rec1.set("spec",std.getSpec());
std.focus();
});


效果图:
[img]/upload/attachment/102774/d7e920e0-f5b8-3e56-a694-302ca3842024.jpg[/img]

[img]/upload/attachment/102776/02a258d4-d922-31d2-8a01-7ca72d350c22.jpg[/img]
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值