因为所有的可视控件需要一个渲染的时间,所以渲染完被刷没了
解决方式:(假设textfield的id是name)加个延迟时间就好!
ExtgetCmp('name')focus(false, 100);
或者
ExtgetCmp('name')focusdefer(100, ExtgetCmp('name'));
如果是extjs的field , 都有 blur , focus 的事件var field = Extcreate("ExtformfieldText" , {
listeners:{
blur: function(){
//失去焦点事件
} ,
focus: function(){
//获取焦点
}
}
});
//如果是通过extjs *** 作当前页面中的input
//这是Input
//<input type='text' id="a">
var el = Extget("a");
aon({
blur: function(){
//失去焦点事件
} ,
focus: function(){
//获取焦点
}
});
使用extjs多数都是单页面系统,你说的另一个页面,应该指的就是另一个tab之类的吧,
如果是这样的话,以extjs6为例,可以在当前的view的contorller中:
view = thisup("共同父类的xtype")down('另一个tab的xtype加name值');
grid = viewgetViewModel('grid');
类似的代码就可以解决你的问题。
var e = MainGrid.getSelectionModel().selection.record;e.set(&#39;depid&#39;, &#39;10000&#39;);e.set(&#39;depname&#39;, &#39;总部&#39;);var depid = e.get(&#39;depid&#39;);var depname = e.get(&#39;depname&#39;);这个record其实就是一个json对象
代码如下:
// ArrayStore
var keyNameStore = new ExtdataArrayStore({
fields: ['text', 'value'],
data : [
['商品编号','Meta_productsNo'],
['商品名称','Meta_productName']
]
});
// 通过value值获取keyNameStore里面的text
function getFilterFieldLable(value){
var rt = "";
var rowIndex = keyNameStoregetCount();
for(var i=0;i<rowIndex;i++){
var record = keyNameStoregetAt(i);
var fields = ExtutilJSONencode(recorddata);
var fieldObj = ExtutilJSONdecode(fields);
if(value==fieldObjvalue){
rt = fieldObjtext;
break;
}
}
return rt;
}
方法一、给Grid绑定以下事件:
headerclick : ( Grid this, Number columnIndex, ExtEventObject e )
事件响应代码里面读取dataIndex:
var fieldName = thisgetColumnModel()getDataIndex(columnIndex);
这就是你要的数据列名。
说明:
Grid的headerclick事件虽然每个版本的Docs分别说:
Available since: Ext JS 420
Available since: Ext JS 230
可是它确实在Ext21/docs/output/ExtgridGridPanelhtml里就有的。
针对问题补充:
在你的show函数里如果可以访问到var column=Ext,utilJSONdecode这个变量,那可以尝试:
function show(value,metadata,record,rowIndex,colIndex,store){
alert(columngetDataIndex(colIndex));
}
var cerficicationData = [{
'key' :'', 'value' :'全部'
}, {
'key' :'0', 'value' :'无证'
}, {
'key' :'1', 'value' :'有证'
}];
var cerficicationStore = new ExtdataSimpleStore( {
fields : [ { name :'key', mapping :'key' }, { name :'value', mapping :'value' } ],
data : cerficicationData
});
var expBaseForm = new ExtFormPanel( {
url :'',
method :'post',
labelAlign :'right',
labelWidth :90,
frame :true,
bodyStyle :'padding:0px 0px 0',
items: [{
id:'comboValue',
width:180,
layout:'form',
fieldLabel:'是否有毕业证',
xtype:"combo",
valueField:"key",
displayField:"value",
hiddenName:"certificateFlag",
height:100,
width:200,
store:cerficicationStore,
mode : 'local',//数据模式,local代表本地数据
triggerAction : 'all'// 显示所有下列数据,一定要设置属性triggerAction为all
}]
});
var winIcsQuestionnaireData = new ExtWindow( {
layout : 'fit',
width : 300,
closeAction : 'hide',
height : 200,
closable : false,
resizable : false,
shadow : true,
modal : true,
closable : true,
bodyStyle : 'padding:5 5 5 5',
animCollapse : true,
items: expBaseForm,
buttons : [{
text :'确定',
handler : function() {
alert(ExtgetCmp('comboValue')value());
}
},{
text:'关闭',
winIcsQuestionnaireData hide();
}
}]
});
后台是无法获取Ext控件的,因为Ext是通过javascript在前台画出来的控件,后台根本不知道这个控件的存在。
建议楼主把逻辑都卸载javascript中,然后需要获取数据的地方通过ajax动态获取数据,然后拿到客户端来 *** 作,我们之前实现的一个树和表格的拖拽都是通过Ext作的,涉及到交互的地方就是通过Ajax实现的。
另外,团IDC网上有许多产品团购,便宜有口碑
以上就是关于如何在Ext.Window显示后,其中里面的某一个文本框自动获得焦点全部的内容,包括:如何在Ext.Window显示后,其中里面的某一个文本框自动获得焦点、ext.js 如何获取另一个页面的grid的值、要获取Ext.grid.ColumnModel的记录,判断其是否被选中并获取选中行的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)