1.使用simplestore正常
2.使用远程数据,设置triggerAction:'all',正常
3.使用远程数据,设置triggerAction:'query',读不出数据
4.使用远程数据,设置triggerAction:'query',在combobox中输入4个字符可加载到数据,但没有筛选功能
[code="java"]
var employee_store = new Ext.data.Store({
proxy:new Ext.data.HttpProxy({url:"../Process/Form_cli_e.ashx"}),
reader: new Ext.data.JsonReader({
//remote:true,
totalProperty:'totalProperty',
root:'root',
id:'employee_store'
},[
{name: 'ry_name'},
{name: 'ry_gh'}
])
});
function cli_e(){
var cli_e_box = new Ext.form.ComboBox({
mode:'remote',
idname:'cli_E',
name:'cli_E',
displayField:'ry_name',
valueField:'ry_gh',
store:employee_store,
typeAhead:false,
triggerAction:'query'
});
return cli_e_box;
}
[/code]
combo.js
[code="js"]Ext.ns('Example');
Example.comboConfig = {
xtype:'combo'
// we need id to focus this field. See window::defaultButton
,id:'combo'
// we want to submit id, not text
,valueField:'persID'
,hiddenName:'persID'
// could be undefined as we use custom template
,displayField:'persLastName'
// query all records on trigger click
,triggerAction:'all'
// minimum characters to start the search
,minChars:2
// do not allow arbitrary values
,forceSelection:true
// otherwise we will not receive key events
,enableKeyEvents:true
// let's use paging combo
,pageSize:5
// make the drop down list resizable
,resizable:true
// we need wider list for paging toolbar
,minListWidth:220
// force user to fill something
,allowBlank:false
// store getting items from server
,store:new Ext.data.JsonStore({
id:'persID'
,root:'rows'
,totalProperty:'totalCount'
,fields:[
{name:'persID', type:'int'}
,{name:'persLastName', type:'string'}
,{name:'persFirstName', type:'string'}
]
,url:'process-request.php'
,baseParams:{
cmd:'getData'
,objName:'person2'
,fields:'["persLastName","persFirstName"]'
}
})
// concatenate last and first names
,tpl:'<tpl for="."><div class="x-combo-list-item">{persLastName}, {persFirstName}</div></tpl>'
// listeners
,listeners:{
// sets raw value to concatenated last and first names
select:function(combo, record, index) {
this.setRawValue(record.get('persLastName') + ', ' + record.get('persFirstName'));
}
// repair raw value after blur
,blur:function() {
var val = this.getRawValue();
this.setRawValue.defer(1, this, [val]);
}
// set tooltip and validate
,render:function() {
this.el.set(
{qtip:'Type at least ' + this.minChars + ' characters to search in last name'}
);
this.validate();
}
// requery if field is cleared by typing
,keypress:{buffer:100, fn:function() {
if(!this.getRawValue()) {
this.doQuery('', true);
}
}}
}
// label
,fieldLabel:'Combo'
};
// main entry point
Ext.onReady(function() {
Ext.QuickTips.init();
// invalid markers to sides
Ext.form.Field.prototype.msgTarget = 'side';
// create and show window
var win = new Ext.Window({
id:'combo-win'
,title:Ext.fly('page-title').dom.innerHTML
,layout:'fit'
,width:300
,height:150
,closable:false
,border:false
// let window code to focus the combo on show
,defaultButton:'combo'
,items:{
xtype:'form'
,frame:true
,defaults:{anchor:'-20'}
,items:[{
xtype:'textfield'
,fieldLabel:'Dummy Field'
}
,Example.comboConfig
]
}
});
win.show();
}); // eo onReady
[/code]
combo.html:
[code="html"]
<?if("examples.extjs.eu"===$_SERVER["SERVER_NAME"]){$page='combo';include("stats.php");}?>
[/code]
先找出是不是服务器的问题
断点跟踪提交到服务器上的参数,
执行结果,
需要返回到页面的值。
再来看是不是EXT哪个地方写错了。
triggerAction 用all表示把下拉框列表框的列表值全部显示出来,如果用query,如果你做了一次选择,第二次再去用,按第一次输入的值,它只显示匹配出来的。