Escolar Documentos
Profissional Documentos
Cultura Documentos
Bruno Tavares
Home
About Me
My Projects
Native to Web
Para dar uma viso geral do que ser feito estou anexando um print do resultado final.
no outro tutorial meu chamado Como abrir pginas de um menu no centro de sua apl
Sencha Touch
Web Development
Como em grande parte dos tutoriais irei utilizar a pasta examples do Ext para armazena
aplicao. Nela irei criar uma sub-pasta chamada crudUsuarios. Estou utilizando a IDE
tenho um projeto preparado para essa aplicao. Tambm j tenho um site no Apache c
funcional. Podemos comear!
No lado do servidor usaremos PHP e MySQL. Gostaria de criar uma outra verso desse t
SQLServer mas algum tem que mostrar interesse :).No irei fazer nenhum passo-a-pas
Diagramas
server-side.zip
Para construo desse CRUD partimos do princpio de que cada interface uma classe,
listagem de usurios vamos criar uma classe chamada UsuarioLista e vamos extend-la
Esse o ponto fundamental de uma boa arquitetura de aplicao Ext. Fazendo cada int
por uma classe podemos nos beneficiar de todo o ciclo de vida de um componente Ext
componente, e nele iremos definir um store para o grid, suas colunas e alguns atributo
evento de clique sobre o grid no mtodo initEvents. Veja como est a estrutura bsica a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
idProperty: 'usuarioID',
totalProperty: 'totalCount',
autoLoad: true,
autoDestroy: true,
baseParams: {
action: 'listaUsuarios',
limit: 30
},
fields: [
{
name: 'usuarioID',
type: 'int'
},
{
name: 'nome',
type: 'string'
},
{
name: 'UF',
type: 'string'
},
{
name: 'cidade',
type: 'string'
},
{
name: 'nivelHierarquicoID',
type: 'int'
},
{
name: 'nivelHierarquicoDescricao',
type: 'string'
}
]
});
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
dataIndex: 'nome',
header: 'Nome'
},
{
dataIndex: 'UF',
header: 'Estado'
},
{
dataIndex: 'cidade',
header: 'Cidade'
},
{
dataIndex: 'nivelHierarquicoDescricao',
header: 'Nivel Hierarquico'
}]
});
//super
UsuarioLista.superclass.initComponent.call(this);
},
initEvents: function()
{
//super
UsuarioLista.superclass.initEvents.call(this);
this.on({
scope: this,
rowdblclick: this._onGridRowDblClick
});
},
//}
//Overrides{,
onDestroy: function() {},
//}
//Listeners {
_onBtnNovoUsuarioClick: function() {},
_onBtnExcluirSelecionadosClick: function() {},
_onGridRowDblClick: function(grid, rowIndex, e) {}
//}
//Demais mtodos {
//}
});
Ext.reg('e-usuariolista', UsuarioLista);
Dessa forma o nosso grid j deve estar requisitando dados no servidor e renderizando o
ainda registros vamos criar a ao do boto Novo usurio. Este boto quando clicado
cadastro e mostr-la. Como tambm iremos mostrar essa janela ao editar um registro,
rotina de criao da janela em um mtodo para evitar repetio de cdigo:
1
2
,_onBtnNovoUsuarioClick: function()
{
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
,_criaWindowUsuario: function()
{
if(!this._winUsuario)
{
this._winUsuario = new UsuarioCadastro({
renderTo
: this.body //restringe rea da jan
,listeners :{
scope : this
,salvar : this._onCadastroUsuarioSalvarExcl
,excluir: this._onCadastroUsuarioSalvarExcl
}
});
}
return this._winUsuario;
}
essa janela pode ser invocada vrias vezes uma importante otimizao cri-la somen
mos, seja ela nova ou reciclada, iremos setar o id do usurio para a janela e ela ir se
informaes corretas. Mas ateno, essa otimizao requer que sua janela tenha o conf
setado para hidden ao inves de destroy (veremos isso na definio da janela).
Assim como criamos uma janela e guardamos sua referncia, precisamos tambm dest
referncia. Aproveitamos o mtodo onDestroy do grid para fazer isso. Quando o grid for
destruir tambm a janela.
1
2
3
4
5
6
7
8
,onDestroy: function()
{
UsuarioLista.superclass.onDestroy.apply(this,arguments);
//destri a janela de usurio e limpa sua referncia
Ext.destroy(this._winUsuario)
this._winUsuario = null;
}
personalizados. Veja que ao criar a janela eu associo um listener aos eventos salvar e e
,listeners :{
scope : this
,salvar : this._onCadastroUsuarioSalvarExcluir
,excluir: this._onCadastroUsuarioSalvarExcluir
}
...
,_onCadastroUsuarioSalvarExcluir: function()
{
//recarrega grid
this.store.reload();
}
A janela de cadastro outra interface, por isso um outro arquivo e uma outra classe. Va
true
true
true
450
300
'Cadastro de Usurio'
'fit'
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
,constructor: function()
{
this.addEvents({
salvar : true
,excluir: true
});
//super
UsuarioCadastro.superclass.constructor.apply(t
}
,initComponent: function()
{
//combo de nivel hierarquico
this.comboNivelHierarquico = new Ext.form.Comb
fieldLabel
: 'Nivel Hierrquico'
,hiddenName
: 'nivelHierarquicoID'
,xtype
: 'combo'
,triggerAction : 'all'
,valueField
: 'nivelHierarquicoID'
,displayField
: 'descricao'
,emptyText
: 'Selecione um Nvel'
,allowBlank
: false
,store
: new Ext.data.JsonStore({
url
: 'Ajax/NivelHierarquicoAj
,baseParams : {
action: 'listaNiveisHierarquicos'
}
,fields:[
{name: 'nivelHierarquicoID', type
,{name: 'descricao'
, type
]
})
})
//formulrio
this.formPanel = new Ext.form.FormPanel({
bodyStyle : 'padding:10px;'
,border
: false
,autoScroll : true
,defaultType: 'textfield'
,defaults
: {
anchor: '-19'
}
,items:[{
fieldLabel : 'Nome'
,name
: 'nome'
,allowBlank : false
,maxLength : 100
},{
fieldLabel : 'Estado'
,name
: 'UF'
,anchor
: ' '
,width
: 50
,maxLength : 2
},{
fieldLabel : 'Cidade'
,name
: 'cidade'
,maxLength : 100
}
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
,this.comboNivelHierarquico]
})
Ext.apply(this,{
items : this.formPanel
,bbar
: ['->',{
text
: 'Salvar'
,iconCls: 'icon-save'
,scope : this
,handler: this._onBtnSalvarClick
},
this.btnExcluir = new Ext.Button({
text
: 'Excluir'
,iconCls: 'silk-delete'
,scope : this
,handler: this._onBtnDeleteClick
})
,{
text
: 'Cancelar'
,iconCls: 'silk-cross'
,scope : this
,handler: this._onBtnCancelarClick
}]
})
//super
UsuarioCadastro.superclass.initComponent.call(
}
//}
//Override {
,show: function(){
//super
UsuarioCadastro.superclass.show.apply(this,arg
//TODO: rotina para carregar formulario
}
,onDestroy: function()
{
//super
UsuarioCadastro.superclass.onDestroy.apply(thi
this.formPanel = null;
}
//}
//Listeners {
,_onBtnSalvarClick: function(){}
,_onBtnDeleteClick: function(){}
,_onBtnCancelarClick: function(){}
//}
153
});
Depois disso sua janela j pode ser visualizada, porm ainda no est funcional. Para in
devemos definir uma ao para o boto Salvar. Perceba os passos realizados: a valida
submit realizado, e aps tudo isso disparamos o evento personalizado salvar. Um nic
,_onBtnSalvarClick: function()
{
//pego o formulrio
var form = this.formPanel.getForm();
//verifico se valido
if(!form.isValid())
{
Ext.Msg.alert('Ateno','Preencha corretamente todo
return false;
}
//crio uma mscara
this.el.mask('Salvando informaes');
/*
* Submitando formulrio
*/
form.submit({
url
: 'Ajax/UsuarioAjax.php'
,params : {
action
: 'criaAtualizaUsuario'
,usuarioID : this.usuarioID
}
,scope:this
,success: function() //ao terminar de submitar
{
//tir mscara
this.el.unmask();
//esconde janela
this.hide();
//evento disparado
this.fireEvent('salvar',this);
}
});
}
Feito isso j estamos aptos a acessar a listagem, clicar em novo usurio, preencher o fo
fazer isso a janela ser fechada, o grid atualizado e nosso novo registro listado.
Vamos ento agora ver como feita a atualizao. Para isso precisamos, na classe Usua
mtodo que monitora o duplo click nas linhas do grid. Fazemos basicamente o que fize
usurio, porm agora o id do usurio no ser mais zero.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
//busca registro da linha selecionada
var record = grid.getStore().getAt(rowIndex);
//extrai id
var usuarioID = record.get('usuarioID');
//cria janela de cadastro
this._criaWindowUsuario();
//seta atributos
this._winUsuario.setUsuarioID(usuarioID);
//mostra
this._winUsuario.show();
}
A classe UsuarioLista est fazendo sua parte, agora basta a janela fazer a sua. Ao mostra
verificar qual o valor da varivel usuarioID. Se for zero, o formulrio deve ser resetado (l
reciclado e conter valores antigos?). Caso no for zero, o formulrio dever ser populad
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
,show: function()
{
//super
UsuarioCadastro.superclass.show.apply(this,arguments);
if(this.usuarioID !== 0) //se tem usuario
{
//pode excluir
this.btnExcluir.show();
//crio uma mscara
this.el.mask('Salvando informaes');
/*
* Carregando o formulrio. Ele deve respeitar algu
* Ext.form.Action.Load, como por exemplo conter um
*/
this.formPanel.getForm().load({
url
: 'Ajax/UsuarioAjax.php'
,params : {
action
: 'buscaUsuario'
,usuarioID : this.usuarioID
}
/*
* Quando o formulrio carregar vou tratar prob
* e tirar a mscara
*/
,scope : this
,success: this._onFormLoad
});
}
else //se no existir usuario
{
//no pode excluir
this.btnExcluir.hide();
38
39
40
41
42
43
/*
* Resetando o formulrio
*/
this.formPanel.getForm().reset();
}
}
Na rotina que popula o formulrio existe um problema com o combo. O store do combo
no foi carregado. O formulrio ao ser populado vai tentar setar valor no combo, porm
vazio o prprio ID vai ser atribudo. Resultado disso, temos na interface o id do nivel hie
descrio. Esse um problema muito enfrentado por iniciantes. Existem duas abordage
performance melhor. Meu combo pode conter centenas de registros e meu form conter
combos. Carreg-los todos de uma vez pode degradar a performance da tela. Por isso ju
//adicionado no store
this.comboNivelHierarquico.store.insert(0,novoRegis
At aqui j podemos listar usurios, criar novos usurios, e alterar usurios j registrado
remoo de registros. Duas formas so propostas: remover o usurio na tela de seu cad
mltiplos usurios na listagem. Ambos os mtodos so bem fceis e vou somente post
Em UsuarioLista o mtodo este:
1
2
3
4
5
,_onBtnExcluirSelecionadosClick: function()
{
//busco selecionados
var arrSelecionados = this.getSelectionModel().getSelec
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
E em UsuarioCadastro este:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
,_onBtnDeleteClick: function()
{
Ext.Msg.confirm('Confirmao','Deseja mesmo excluir ess
{
if(opt === 'no')
return
this.el.mask('Excluir usurio.');
Ext.Ajax.request({
url
: 'Ajax/UsuarioAjax.php'
,params : {
action
: 'deletaUsuario'
,usuarioID : this.usuarioID
}
,scope : this
,success: function()
{
this.el.unmask();
this.hide();
22
23
24
25
26
27
28
29
30
/*
* Evento personalizado excluir sendo dispa
*/
this.fireEvent('excluir',this);
}
})
},this)
}
Bem galera, acho que acabei juntando muito contedo em um post s porm me esforc
deixar o cdigo bem comentado e o post bem organizado. Espero ter sido o mais comp
sanado diversas dvidas. Tambm espero ter demonstrado como organizar melhor o se
interface ser representada por uma classe. Vejo diversos cdigos muito complicados em
uma linguagem que implementa sua maneira de orientao a objetos e por isso necess
mais profissional.
Cdigo
Completo
Demo Online
: Bruno Tavares
: Ext JS
You may format code with [code][/code] and use <a> and <strong>.
Post It
88 Replies
77 Comments
0 Tweets
0 Facebook
10 Pingbacks
Last reply was 1 week ago
Miguel Cartagena View %d 10UTC %B 10UTC %Y
Bruno, ficou muito bom seu CRUD, especialmente para quem est comean
tenho duas sugestes:
1- Que tal utilizar o RowEditor para edio das linhas? Creio que uma solu
elegante.
2- O prximo exemplo poderia ser um CRUD pai e filho, como alguns cham
cada linha (cadastro) est vinculado a uma outra lista. Por exemplo: cadas
entrada e a lista dos items que esto na nota fiscal.
Esse um CRUD mais elaborado e bastante utilizado. ento creio que seja
Precisando de ajuda, estamos a :)
Abraos
Responder
Grande Miguel! Valeu pelas sugestes! O RowEditor de fato bem mais bac
nada impede de uma verso com RowEditor ;) E sobre o CRUD pai filho, ti
bacana. Parabns ao Miguel tmb, pois o exemplo q ele deu muito bom e j
Seria de MUITA IMPORTNCIA esta nova verso! Espero q sai logo logo. Para
aguardo a novo verso! Grande abrao a todos!
Responder
Nossa, Melhor tutorial at agora, parabns mesmo pela iniciativa, agora sim
declarei uma classe singleton, ou seja, uma classe que no pode ser instan
uma instancia, global e nica no sistema, como Ext ou Ext.Ajax. Essa mode
Responder
Excelente pergunta! Voc est correto sim nas afirmaes. Carregar todos o
na arquitetura por isso no comentei. Fiz apenas uma breve introduo sob
Mas assim, como quero extender ele, preciso criar um form com cadastro d
senha e validao da senha.
esclarecedor. Espero que continue com seu empenho e sou mais um a faze
pai-filho, utilizando uma NF.
Responder
[...] post CRUD Avanado apresentei um pouco sobre a arquitetura que julg
aplicaes Ext. Para [...]
Responder
Nota Fiscal ExtJS Crud Pai Filho | ExtDesenv View %d 06UTC %B 06UTC %Y
[...] de uma nota fiscal, justamente o exemplo que irei abordar agora. O que
Responder
que tambm de muitas pessoas, seria saber como o processo para voc
voc faz se voc l algum livro sobre Ext, ou estuda a API, ou l algum tut
se basear etc. Obrigado!!!
Responder
Veja que no existe muito material no oficial do Ext. A grande parte est n
abs!
Responder
Acho que voc j deve estar acostumado a ouvir elogios a respeito do seu t
razo. Meus parabns, ele de fato fonte de grande motivao para quem q
usando este framework. Bruno uma duvida minha: possvel usar ASP no l
Responder
MUITO OBRIGADO VALEU MESMO SEU SITE AJUDA MUITAS PESSOAS NO DIA
Responder
padres pois sei que precisamos de ateno dobrada ao utilizar esse frame
Abrs,
Samir
Responder
[...] Alm disso temos exemplos mais completos no blog que podem tamb
por exemplo o Crud Avanado e Carregar cdig Ext sob [...]
Responder
[...] Alm disso temos exemplos mais completos no blog que podem tamb
por exemplo o Crud Avanado e Carregar cdig Ext sob [...]
Responder
[...] de uma nota fiscal, justamente o exemplo que irei abordar agora. O que
[...] post CRUD Avanado apresentei um pouco sobre a arquitetura que julg
aplicaes Ext. Para [...]
Responder
declarei uma classe singleton, ou seja, uma classe que no pode ser instan
uma instncia, global e nica no sistema, como Ext ou Ext.Ajax. Essa mode
// ...
,baseParams: {action: "listaUsuarios"
,limit: 30
,start: 0
,sort: "Nome"
,dir: "ASC"
}
// ...
//adicionado no store
this.comboNivelHierarquico.store.insert(0,novoRegistro);
deixei assim:
//adicionado no store se nao houverem registros
if(this.comboNivelHierarquico.store.getCount()==0){
this.comboNivelHierarquico.store.insert(0,novoRegistro);
}
Valeu pelas modificaes Rubens. Assim que eu puder vou dar uma refator
Abs!
Responder
Responder
eu crio uma nova aba, e dentro dessa aba eu coloco minha listagem utiliza
anteriormente.
Espero ter lhe ajudado. A rotina um pouco complicadinha =/
abs!
Responder
Conheci o ExtJs por acaso, estava pesquisando algumas coisas sobre o JQu
deparar com o ExtJs. Gostei muito dele.
Estou usando como base sua arquitetura para montar uma administrao
motivo do erro. Olhei os cdigos de exemplo que vem com o extjs 3.2 e a n
eu vi que voc coloca o FormPanel em um Window. Por que no exibe os
indica se o erro deve aparecer num tooltip (qtip), ou com um cone ao lad
Estou com uma dificuldade agora: dentro do form eu queria colocar uma g
tbar) para incluir e alterar dados dessa grid. Por algum motivo, quando eu
Sei que explicando assim bem difcil. Caso seja necessrio, eu enviarei o c
obrigado!
Responder
cdigo. Dessa maneira alm de receber minha ajuda voc recebe o apoio d
comunidade.
Forte abrao!
Responder
Bruno, seu exemplo ficou muito bom, e a forma como o cdigo ficou estrut
excelente. Tenho uma dvida, quando clicamos duas vezes na linha pra ab
Muito obrigado pela resposta rpida, seu trabalho muito bom. Aguardo a
Grato.
Responder
Segue abaixo alterao que fiz no seu fonte. No mtodo _onFormLoad adic
linha que resolveu o problema.
//atualiza o store
this.comboNivelHierarquico.store.reload();
Ento o mtodo ficou assim:
_onFormLoad: function(form, request)
{
* Prefiro a segunda por ser MUITO mais performtica e otmizar muito o car
Para isso funcionar
Gostaria de tirar uma dvida, copiei toda a sua aplicao , mudei apenas o
usando C#, porem qnd tento rodar ele da o seguinte erro:
b[d.xtype || e] is not a constructor
Ta tudo do jeito q est no site, como se ele nao tivesse criando o tipo da U
includes esto todos no index tb.
Agradeo pela ateno
Responder
Esse erro justamente porque voc est fazendo uso de um xtype que o Ex
Talvez como voc tenha dito, a classe UsuarioLista no esteja sendo carreg
Cara eu estou utilizando o seu modelo de aplicao (que achei muito intere
um sistema de cadastro de ramais e contatos.
Mas eu me deparei com um problema superior chamado CHEFE. Ele no
WINDOWS de jeito nenhum para o cadastro. Ele quer que o grid e o form es
uma nica tela como nesse exemplo que o Ext oferece:
DIRETORIO_EXT_BASE/examples/form/form-grid-access.html
Voc tem ou sabe algum lugar onde tenha exemplo de como adaptar essa t
modelo de crud que voc est usando? Qualquer ajuda bem vinda!
Responder
Tem mais algumas adaptaes a fazer, mas eu gostei da sua idia. Quem sa
e crio mais um tutorial. Abs, e qqer coisa estamos tambm no frum!
Responder
Fala Bruno! Cara voc responde rpido! No forum do Ext eu fico esperando
um sinal de vida!
o form a partir do grid que eu criei. Tentei usar o getCmp mas ele no funci
Tipo:
var RamalForm = Ext.extend(Ext.form.FormPanel,{
id: RamalPanel
,layout: column
,initComponent: function(){
Ext.apply(this,{
items: [
{
xtype: 'grid'
,id: 'RamalLista'
,sm: new Ext.grid.RowSelectionModel({
singleSelect: true
,listeners: {
rowselect: function(sm, row, rec) {
}
]
})
}
});
Ext.reg(CAD_RAMAL,RamalForm);
Eu postei o cdigo completo no forum do Extjs:
http://www.extjs.com/forum/showthread.php?99555-How-to-navigate-bet
de-components-and-pass-values-to-them&p=468749#post468749
Responder
TabPanels dentro de cada TabPanel e panels (com layout column) com grid
acho que virou um frankstein visual mas exatamente o que foi pedido.
O Ext realmente tem uma gama muito grande de possibilidades!
no estilo VIEWPORT a aba HOME tem conteudo esttico. Como voc faz par
dinamico nela?
Dear Bruno, could you please share RowEditor example. On extjs forum, pe
error f is undefined. I try to modify your code to RowEditor but get the sam
help us. thx a lot!
Responder
Ol Bruno, muito til este exemplo, estou fazendo minha aplicao me bas
outros fechados, como fao para que o menu pai Relatrios venha aberto
demais menus pai fechados?
Obrigado!
Responder
itens abertos, como o menu lateral se trata de um Painel com layout accord
Claro que no lugar de 1 voc coloca o ndice do painel que deseja expand
boa tarde, nossa estou impressionado msmo com esta ferramenta. A propo
rola. Voc saberia me indicar uma tutor que relamente funciona a parada !
valeu e .. teu site show de bola!
Responder
Ol Jean! O aptana fera, eu uso ele (: As nicas coisas que eu alterei nele f
(Preferences > aptana > editors > javascript > formatting), e eu tambm adi
validador de cdigo (Preferences > aptana > editors > javascript > validatio
Ol Mayara! No sei de que forma posso lhe ajudar, j que no sei de que fo
Pra quem est comeando, talvez seja mais interessante dar uma olha da n
Responder
[Break on this error] (;//You have an error in your SQL syear WHERE mat
1)
restante dos dados. Como fao para fazer o casamento entre os campos qu
dados a serem exibidos no form?
[]s
Responder
1 Como poderei colocar um div topo no meu cod de forma que a aplica
todo o espao abaixo desse topo?
2 Como fazer com que o combobox dos nveis hierrquicos no aceite que
nele (digitei um nvel no existente e deu uns erros)?
vlw
Responder
Opa.. Outra Dvida (liga no, sou programadr prtico e ainda fico voando c
conecitos)..
Como adaptar esse exemplo usando o carregamento dinamico dos js?
Tem como exemplificar nesse mesmo exemplo?
Responder
Boa tarde, peguei seu exemplo e nao consegui rodar, aparece como se estiv
Tema haver com o browser, estou usando IE, ou tem haver com a verso do
usando a 3.3.1?
Vlw
Responder
Ext.fly(d) is null
Responder
Quando chamo o formulrio para incluir novo usurio, o mesmo feito com
voc est usando PHP, Ruby ou ASP.NET. O que importa que a comunica
tem que ser por JSON (ou xml). Por exemplo, ao submeter um formulrio o
resposta {success: true}, no importa o que voc est usando para criar e
No pretendo usar outra coisa que PHP para criar exemplos, porque dessa
conseguimos focar mais no Ext.
Responder
Responder
[...] post CRUD Avanado com Ext recebi uma boa sugesto de exemplificar
Nessa interface temos um registro X que [...]
Responder
Gostaria de saber com fazer para abrir as opes do menu lateral no centro
consigo faz-lo com o extjs 4.
Obrigado,
Responder
Ola estou com o mesmo problema do Jorge Como converto o Ext.reg(eUsuarioLista); para extjs 4.1. ???
Pode ajudar?
Responder
Ext.reg usado no Ext 3 para registar o xtype para essa classe. No Ext 4 voc
informaria xtype: e-usuariolista na definio da classe.
Bruno, parabns pelo post. Estou em dvida de como eu faria para acresce
Carregar cdigo Ext sob demanda - Bruno Tavares | Bruno Tavares View 10
[...] post CRUD Avanado apresentei um pouco sobre a arquitetura que julg
aplicaes Ext. Para [...]
Responder
Sou meio novo com extjs, fiz o download do cdigo completo, mas como e
Pois no index no abre a aplicao, hehe
Responder