我是ExtJS 4的新手,需要一些帮助来理解它是如何Ext.define工作的.
实际上我想做的是类似于门户网站示例中的portlet,在我的应用程序中,我需要在我的不同选项卡中添加很多对象,所以为了组织我的代码而不是只有一个非常大的脚本,我想在一个单独的文件中定义我需要的每个组件,然后在需要时在主脚本中调用它(我将主要使用这些示例,这就是为什么我想知道它是如何Ext.define工作的所以我可以调整这些示例并使它们成为可能以我想要的方式工作).
我希望我很清楚.
并提前感谢您的帮助.
目前我在设置焦点在extjs文本字段时遇到了问题.当表单显示时,我想将焦点设置为名字文本框,我尝试在函数focus()中使用build但仍然无法使其工作.我很高兴看到你的建议.
var simple = new Ext.FormPanel({
labelWidth: 75,
url:'save-form.php',
frame:true,
title: 'Simple Form',
bodyStyle:'padding:5px 5px 0',
width: 350,
defaults: {width: 230},
defaultType: 'textfield',
items: [{
fieldLabel: 'First Name',
name: 'first',
id: 'first_name',
allowBlank:false
},{
fieldLabel: 'Last Name',
name: 'last'
},{
fieldLabel: 'Company',
name: 'company'
}, {
fieldLabel: 'Email',
name: 'email',
vtype:'email'
}, new Ext.form.TimeField({
fieldLabel: 'Time',
name: 'time',
minValue: '8:00am',
maxValue: '6:00pm'
})
],
buttons: [{
text: 'Save'
},{
text: 'Cancel'
}]
});
simple.render(document.body);
Run Code Online (Sandbox Code Playgroud) 在我们的ExtJS应用程序中,我们有一些菜单和选项卡面板.单击menuItem打开一个网格.
我们要求用户可以在以下两种模式中的任何一种模式下打开包含网格的显示:
tabpanel.window.open,首先加载整个ExtJS库,然后加载网格.弹出窗口作为浏览器窗口是为了方便多个监视器.所以这里的问题是每当我们打开一个弹出窗口时,需要ExtJS库并且它在IE中占用了大量内存.
有没有其他方法我们可以加载ExtJS网格的浏览器窗口弹出窗口而不加载整个ExtJS框架?
或者任何其他想法都是最受欢迎的,因为我们在IE中确实面临很多内存问题而且用户不愿意使用chrome.
提前致谢.
ExtJS提供了一个花哨的组合框,它具有许多功能 - 提前输入,允许随机输入文本,隐藏下拉列表中所有未加入已输入文本的条目.
我不想要这些功能.我想要一个选择框,其行为几乎与人们期望普通选择框在vanilla html中完全相同.
我确实希望它绑定到数据存储,我确实想要组合框附带的所有其他extjs配置好东西.我只是不希望用户/测试人员遇到一个选择框时会吓坏他们,这些选择框打破了他们现有的这些工作方式的心理范式.
那么如何才能让extjs组合框更像选择框呢?或者我是否完全使用了错误的小部件?
我可以为树创建上下文菜单并附加到'contextmenu'事件.码:
contextMenu = new Ext.menu.Menu({
items: [{
text: 'Edit',
iconCls: 'edit',
handler: edit
},...]
})
Ext.getCmp('tree-panel').on('contextmenu', function(node) {
contextMenu.show(node.ui.getAnchor());
})
Run Code Online (Sandbox Code Playgroud)
但是我如何为网格元素创建上下文菜单?
有没有办法将ExtJS(版本4)ComboBox的下拉菜单的宽度设置为宽于实际输入框的宽度?
我有一个comboxbox,我希望大约200px,但我在结果下拉列表上分页,宽度甚至不足以显示所有分页栏的控件.
这是我创建组合的代码:
var add_combo = Ext.create('Ext.form.field.ComboBox',
{
id : 'gbl_add_combo',
store : Ext.create('Ext.data.Store',
{
remoteFilter : true,
fields : ['gb_id', 'title'],
proxy :
{
type : 'ajax',
url : 'index.php/store/get_items',
reader :
{
type : 'json',
root : 'records',
totalProperty : 'total',
successProperty : 'success'
},
actionMethods :
{
read : 'POST',
create : 'POST',
update : 'POST',
destroy : 'POST'
}
}
}),
listConfig:
{
loadingText: 'Searching...',
emptyText: 'No results found'
},
queryMode : 'remote',
hideLabel : true, …Run Code Online (Sandbox Code Playgroud) 当我应该使用initComponent比较constructor?
我一直在使用initComponent来扩展我的对象,但查看Ext.define的文档是使用构造函数来查看它们然后放置.有什么不同?
相比:
Ext.define('My.app.PanelPart2', {
extend: 'My.app.Panel',
constructor: function (config) {
this.callSuper(arguments); // calls My.app.Panel's constructor
//...
}
});
Run Code Online (Sandbox Code Playgroud)
至
Ext.define('My.app.PanelPart2', {
extend: 'My.app.Panel',
initComponent: function (config) {
Ext.apply(this, config);
this.callParent(arguments);
}
});
Run Code Online (Sandbox Code Playgroud)
我知道有些组件没有初始化(我正在看着你Ext.data.Store),这导致我只倾向于编写构造函数,因为这应该是通用的.
这个问题是我在这里的原始帖子的一部分获取数据到Extjs GridPanel
下面是我的控制器从sql db读取数据然后我试图将结果编码为JSON并将数据发送回我的gridview.js
public JsonResult writeRecord()
//public string writeRecord()
{
Response.Write("Survey Completed!");
SqlConnection conn = DBTools.GetDBConnection("ApplicationServices2");
string sqlquery = "SELECT Q1, Q2, Q3, Q4, Improvements, Comments FROM myTable";
SqlDataAdapter cmd = new SqlDataAdapter(sqlquery, conn);
DataSet myData = new DataSet();
cmd.Fill(myData, "myTable");
conn.Open();
conn.Close();
return Json(myData, JsonRequestBehavior.AllowGet);
//return myData.GetXml();
}
Run Code Online (Sandbox Code Playgroud)
这就是问题所在,通过上面的代码,我在执行gridview.js时得到的gridview表没有数据,但如果我直接访问我的控制器的方法就像这样
http://localhost:55099/GridView/writeRecord
Run Code Online (Sandbox Code Playgroud)
我收到这个错误,
序列化"System.Globalization.CultureInfo"类型的对象时检测到循环引用. 描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息. 异常详细信息: System.InvalidOperationException:序列化"System.Globalization.CultureInfo"类型的对象时检测到循环引用.
有人可以请帮忙..
我用npm安装了Cordova和PhoneGap:
sudo npm install -g cordova
sudo npm install -g phonegap
Run Code Online (Sandbox Code Playgroud)
但是,两者都返回相同的错误消息:
/usr/bin/env: node: No such file or directory
Run Code Online (Sandbox Code Playgroud)