数据表中有3个属性,id name cityid
读取其中一条记录的时候,只有name和cityid,id的属性读取不出来。
[code="java"] var comboCity=new Ext.form.ComboBox({
fieldLabel:'城市',
emptyText:'请选择',
autowidth:true,
selectOnFocus:true,
forceSelection: true,
mode:'local',
triggerAction:'all',
//triggerAction:'query',
name:'place.cityid',
id:'cityid',
store:citystore,
valueField:'id',
displayField:'name',
hiddenName:'cityid'
});
var comboPlace=new Ext.form.ComboBox({
fieldLabel:'地区',
emptyText:'请选择',
autowidth:true,
selectOnFocus:true,
forceSelection: true,
mode:'local',
triggerAction:'all',
//triggerAction:'query',
name:'place.name',
id:'name',
store:placestore,
//valueField:'id',
displayField:'name',
hiddenName:'name'
});[/code]
是不是这段代码有问题,求大手帮忙看一下。
插入时候空,值没取到呗。
你配置一下ibatis把sql打印出来,看看执行查询操作的sql。
要确保sql中的名称和你对像实体类中的属性一致。
place.cityid place.name 哪里去读了id?
SELECT p.id,p.name,p.cityid,c.name from place p,city c
WHERE p.cityid=c.id 是ON 不是WHERE
我发现你这sql语句还不是只有一个地方错误呢。
SELECT p.id,p.name,p.cityid,c.name from place p,city c
ON p.cityid=c.id
SELECT p.id,p.name,p.cityid,c.name from place p left join city c
ON p.cityid=c.id
应该是这样的。
[quote]SELECT p.id,p.name,p.cityid,c.name from place p,city c
WHERE p.cityid=c.id 是ON 不是WHERE
[/quote]
on的话是用join关联时候才用的。像这种直接查两表,只能用where的。
你这里面有p.name和c.name 两个名字一样,你又没有进行as 肯定会出错,读不出来数据。
[code="java]SELECT p.id as id ,p.name as pName,p.cityid as cityid,c.name cName from place p,city c
WHERE p.cityid=c.id
[/code]
as 重命名的意思,比如 p.id as id; as你也可以省略,比如 p.id id,p.name pName,p.cityid 城市id (也可以写中文)
试过我才说的那种没有?
那你只能调试一下了,先把sql放在查询分析器做查询,如果有数据的话,你进入debuge进入调试模式,看看刚查询后返回的数据集里面name属性有没有值,确定好到底是哪个地方把值传丢了。
SELECT p.id as id ,p.name as pName,p.cityid as cityid,c.name cName from place p,city c
一个sql里面出现两个name一定要重命名,一个pname 一个cname
网上找找debuge的方法,看看list里面的属性字段到底是什么。写程序会调试是少不了的。