我有一Ext.grid.Panel组列.此网格已过滤,根据过滤器,我想为列定义编辑器.
我的网格:
Ext.define('Mb.view.MyPanel', {
extend: 'Ext.grid.Panel',
columns: [
{text: 'Order #', dataIndex: 'id'},
{text: 'Action', dataIndex: 'type',
renderer: function(value){
if(value == 'BP') return Lang._('Veuillez choisir')
return ''
}
},
Run Code Online (Sandbox Code Playgroud)
现在我想做一些事情:
var panel = Mb.app.getView('MyPanel');
if (condition == true) {
panel.getColumns[1].setEditor({
xtype: 'textfield',
...
})
}
Run Code Online (Sandbox Code Playgroud)
显然,方法getColumns和setEditor不存在.因此,我需要另一种方法来激活该列上的编辑器.
我没有找到一种方法来访问列定义来修改它们并在之后重新呈现网格.
你能给我一个关于搜索方向的提示吗?谢谢.
ExtJS版本:6.2.1.167
小提琴:fiddle.sencha.com/#view/editor&fiddle/1tlt
此功能在ExtJS 2.x中有效,并且没有任何问题.
拥有一个网格(带有分组功能和单元格编辑插件),可以在一列中包含多个不同的编辑器(textfield和combos).
网格颠覆了传统的表格系统,以便垂直显示字段名称和记录值.表头的示例如下所示:
+-------------+-----------------+-----------------+-----------------
- Field Names - Record 1 Values - Record 2 Values - Editable Column
+-------------+-----------------+-----------------+-----------------
Run Code Online (Sandbox Code Playgroud)
我们不能使用传统系统,因为有数百个字段,但只有几个记录可供比较.
这是允许我使用多个编辑器的主要代码:
Ext.define('MemberCellEditing', {
extend: 'Ext.grid.plugin.CellEditing',
xtype: 'membercellediting',
alias: 'plugin.membercellediting',
getCachedEditor: function(editorId, record, column) {
var me = this,
editors = me.editors,
dropDownName = record.get('dropDown');
// If dropdown field, use dropdown name as editor id
if (dropDownName && dropDownName != 'N') editorId = dropDownName;
// Attempt to get editor
var …Run Code Online (Sandbox Code Playgroud)我正在使用ExtJs 4.1框架.我有一个网格,只显示一列(名称).网格与具有两个字段(Name和SortOrder)的商店相关联.商店中的"名称"字段与网格的"名称"列相关联.我想根据商店中SortOrder字段中可用的值对名称列进行排序.我怎样才能实现这样的逻辑.
谢谢
目前该rowediting插件提供了选项update/cancel.当我按下cancel按钮时,如果它是新添加的行,我希望它不添加新行.
我怎样才能做到这一点?
这是FIDDLE.
目前,有了rowediting,我只是添加和删除行.如果无法使用cancel,如何添加新按钮close并使其不添加行.
我也在查看sencha论坛,我找到了一个POST,其中说明如下:
fireEvent canceledit
如果autoRecoverOnCancel是真的,如果记录是幻影然后删除它
但是,这也行不通.你能建议吗?
var rowEditing = Ext.create('Ext.grid.plugin.RowEditing', {
clicksToMoveEditor: 1,
autoCancel: false,
});
tbar: [{
text: 'Add Employee',
iconCls: 'employee-add',
handler: function() {
rowEditing.cancelEdit();
// Create a model instance
var r = Ext.create('Employee', {
name: 'New Guy',
email: 'new@sencha-test.com',
start: new Date(),
salary: 50000,
active: true
});
store.insert(0, r);
rowEditing.startEdit(0, 0);
}
}, {
itemId: 'removeEmployee', …Run Code Online (Sandbox Code Playgroud) 我有一个带复选框选择模型的网格.
Ext.define('Mb.view.ship.OrdersGrid', {
extend: 'Ext.grid.Panel',
selType: 'checkboxmodel',
selModel: {
injectCheckbox: 0,
pruneRemoved: false
},
...
Run Code Online (Sandbox Code Playgroud)
根据字段中的值,有些行不可选择.
在普通列中,我可以renderer使用css(metadata.tdCls)干预显示和隐藏单元格内容,但对于自动生成的复选框列,我找不到一种方法来禁用或隐藏行的复选框.
有谁知道如何做到这一点?
首先,抱歉我的英语不是很好!
我需要制作下一个东西:ExtJS 3.4可编辑网格(示例),它将使用json格式.输入源采用json格式.我做到了,一切正常,就像在例子中.
我做了:
现在我需要这样做:我需要更新网格中单元格更新的数据库中的数据.
我怎样才能做到这一点?在网上找不到任何东西.
也许在delphi7中有一些类似'OnCellEditting'的方法?
我的js代码:
Ext.onReady(function () {
function formatDate(value) {
return value ? value.dateFormat('M d, Y') : '';
}
// shorthand alias
var fm = Ext.form;
// the column model has information about grid columns
// dataIndex maps the column to the specific data field in
// the data store (created below)
var cm = new Ext.grid.ColumnModel({
// specify any defaults for each column
defaults: {
sortable: false // columns are …Run Code Online (Sandbox Code Playgroud) 我想针对网格值的参数制作pdf报告.我希望手风琴标题的年份为参数编号1,月份名称为参数编号2.但是我无法做到.任何人都可以帮我这个.这是我的代码如下:
Ext.define('Ext4Example.view.attendence.Timeperiod' ,{
extend: 'Ext.form.Panel',
alias : 'widget.timeperiod',
id: 'timeperiod',
region: 'west',
border: true,
width: 150,
height:395,
split: true,
defaults: {
// applied to each contained panel
//bodyStyle: 'padding:15px'
},
layout: {
// layout-specific configs go here
type: 'accordion',
titleCollapse: true,
animate: true,
activeOnTop: true,
hideCollapseTool : true
},
initComponent: function() {
var me = this;
me.items = me.maccord();
me.callParent(arguments);
},
mstore: function(year){
var data = [
[1, year, 'January' ],
[2, year, 'February' ],
[3, year, 'March' ],
[4, …Run Code Online (Sandbox Code Playgroud) 我正在研究extjs Grid面板,它有2列,如下图所示.

我的要求是在相应的"任务描述"单元格值的每次更改时更改"短名称"单元格值.我使用编辑器"任务描述"列,如下所示.
columns: [
{
text: 'Task Description',
dataIndex: 'TaskDescription',
flex : 1.5,
editor: {
xtype : 'textarea',
allowBlank : false,
listeners : {
change : function(field, e) {
var text = field.value;
if(text.length <= 26 && !text.match(/[.:-]/)) {
if(text.length == 26) {
text = text[25]==' ' ? text : text.substring(0, text.lastIndexOf(' '));
}
//code to set short name cell value.
}
}
}
}
},
{
text: 'Short Name',
dataIndex: 'Name',
width: 130
}
]
Run Code Online (Sandbox Code Playgroud)
但是如何访问"短名称"列以从更改事件功能设置它.
请建议我的解决方案.
提前致谢.
extjs-grid ×8
extjs ×7
javascript ×5
extjs4.1 ×2
extjs4.2 ×2
checkbox ×1
extjs-stores ×1
extjs3 ×1
extjs4 ×1
extjs6 ×1
roweditor ×1