(Sorry in advance if the post is to long, I just add all the code that is involved in the problem, then I think it could be easier to get an answer)
Hello, I'm encountering a problem when I try to update a store in extjs 4.
To back up a little I'm developing a general grid where you can send the columns you need and also a the fields in a window to add new rows to the grid, then this is the general grid:
Ext.define('masterDataGridControls', {
extend : 'Ext.grid.Panel',
id : 'panelWin',
windowItems : null,
addWin : null,
initComponent : function() {
var me = this;
Ext.applyIf(me, {
dockedItems : [{
xtype : 'toolbar',
dock : 'top',
items : [{
xtype : 'button',
id : 'btn_delete',
iconCls : 'deleteIcon',
tooltip : 'Delete row or group',
handler : function() {
var selection = me.getView()
.getSelectionModel()
.getSelection()[0];
if (selection) {
store.remove(selection);
}
}
}, {
xtype : 'button',
id : 'btn_add',
iconCls : 'addIcon',
tooltip : 'Add row or group',
handler : me.addToList
}]
}]
});
me.callParent(arguments);
},
getAddWindow : function() {
if (!this.addWin) {
this.addWin = new windowPop({
formItems : this.windowItems,
idParent : this.config.id,
record : this.store.model.prototype
});
}
return this.addWin;
},
addToList : function() {
var addWindow = this.findParentByType().findParentByType()
.getAddWindow();;
addWindow.show();
}
});
And I have the class windowPop that is the one who receives the fields, display them and save the data:
Ext.define("windowPop", {
extend : "Ext.window.Window",
formPanel : null,
formItems : null,
record : null,
idParent : null,
initComponent : function() {
var me = this;
me.formPanel = new Ext.form.Panel({
items : this.formItems,
layout: 'anchor'
});
Ext.applyIf(me, {
resizable : false,
closable : false,
width : 300,
minWidth : 300,
minHeight : 200,
y : 150,
layout : 'fit',
plain : true,
modal : true,
items : [me.formPanel],
buttons : [{
text : "i_Save",
handler : function() {
console.info(me.record);
me.formPanel.getForm().updateRecord(me.record);
Ext.getCmp(me.idParent).fireEvent("winSave",me.record);
me.formPanel.getForm().reset();
me.hide();
}
}, {
text : 'i_Cancel',
handler : function() {
me.formPanel.getForm().reset();
me.hide();
}
}]
});
me.callParent(arguments);
}
});
And I have my specific grid, where I define a data.model and for now I'm using a fixed store, but later on will be replace by the one I get from the server:
Ext.define('userKeys', {
extend : 'Ext.data.Model',
fields : [{
name : 'text',
type : 'string'
}, {
name : 'description',
type : 'string'
}, {
name : 'group',
type : 'string'
}]
});
var store = Ext.create('Ext.data.Store', {
model: 'userKeys',
data : [{
text : "que mamera",
description : "asdfasdf",
group : 'homework'
}, {
text : "book report",
description : 'hola',
group : 'homework'
}, {
text : "alegebra",
description : "haha",
group : 'homework'
}, {
text : "buy lottery tickets",
description : "kajsdf",
group : 'homework'
}]
});
Ext.define('ConfigInterfacesUserKeys', {
extend : 'masterDataGridControls',
initComponent : function() {
var me = this;
me.columns = [{
id : 'cl_input',
header : 'i_Text',
dataIndex : 'text',
width : 220
}, {
header : 'i_Description',
dataIndex : 'description',
width : 130
}, {
header : 'i_group',
dataIndex : 'group',
width : 130
}];
me.windowItems = [{
xtype : 'textfield',
id : 'txt_sendTime',
fieldLabel : 'text',
margin : '5 0 0 5',
style : 'font-weight:bold',
labelWidth : 120,
name : 'text'
}, {
xtype : 'textfield',
id : 'txt_waitTime',
fieldLabel : 'description',
margin : '5 0 0 5',
style : 'font-weight:bold',
labelWidth : 120,
name : 'description'
}, {
xtype : 'textfield',
id : 'txt_group',
fieldLabel : 'group',
margin : '5 0 0 5',
style : 'font-weight:bold',
labelWidth : 120,
name : 'group'
}];
me.store = store;
me.callParent(arguments);
}
})
The Problem
When I try to save the fields as you see in the windowPop class Im doing this:
me.formPanel.getForm().updateRecord(me.record);
But I get the next error:
this[this.persistenceProperty] is undefined
I tracked down the error and I find that all start when in the function updateRecord try to set the object to the store:
updateRecord: function(record) {
var fields = record.fields,
values = this.getFieldValues(),
name,
obj = {};
fields.each(function(f) {
name = f.name;
if (name in values) {
obj[name] = values[name];
}
});
record.beginEdit();
**record.set(obj);**
record.endEdit();
return this;
}
I don't know if it is something wrong when I send the model to the window from the general grid, I sent it this way:
record : this.store.model.prototype
Then I'm not sure if its because the model I'm sending its not well forme.
I've been searching the internet but I can't find a proper answer then it will be really helpful if you can guide me in the right way.
Thanks
I don't know if it is something wrong when I send the model to the
window from the general grid
I believe it is. You are sending not an empty instance (which should be sent) but a class' prototype. Try to send:
record : new this.store.model()
Related
ExtJs drag drop example using Grid to Grid
How to implement drag and drop plugin so that we can drag data from one grid and can drop it to another and vice versa in ExtJs
The following explained program will work as drag and drop between two grids
<!DOCTYPE html>
<html>
<head>
<link
href="https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/classic/theme-classic/resources/theme-classic-all.css"
rel="stylesheet" />
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/extjs/6.0.0/ext-all.js"></script>
<script type="text/javascript">
Ext.require([ 'Ext.grid.*', 'Ext.data.*', 'Ext.dd.*' ]);
// Creation of data model
Ext.define('StudentDataModel', {
extend : 'Ext.data.Model',
fields : [ {
name : 'name',//Name of the column
mapping : 'name'//Name to map the columns
},
{
name : 'age',
mapping : 'age'
}, {
name : 'marks',
mapping : 'marks'
} ]
});
Ext.onReady(function() {
// Store data
var myData = [ {
name : "Smith",
age : "20",
marks : "90"
}, {
name : "Alen",
age : "18",
marks : "95"
}, {
name : "Mike",
age : "20",
marks : "68"
}, {
name : "Jon",
age : "21",
marks : "86"
}, {
name : "Keven",
age : "22",
marks : "57"
} ];
// Creation of first grid store
var firstGridStore = Ext.create('Ext.data.Store', {
model : 'StudentDataModel',
data : myData
});
// Creation of first grid
var firstGrid = Ext.create('Ext.grid.Panel', {
multiSelect : true,
viewConfig : {
plugins : {
ptype : 'gridviewdragdrop',
dragGroup : 'firstGridDDGroup',
dropGroup : 'secondGridDDGroup'
},
listeners : {
drop : function(node, data, dropRec, dropPosition) {
var dropOn = dropRec ? ' ' + dropPosition + ' '
+ dropRec.get('name') : ' on empty view';
}
}
},
store : firstGridStore,
columns : [ {
header : "Student Name",
dataIndex : 'name',
id : 'name',
flex : 1,
sortable : true
}, {
header : "Age",
dataIndex : 'age',
flex : .5,
sortable : true
}, {
header : "Marks",
dataIndex : 'marks',
flex : .5,
sortable : true
} ],
stripeRows : true,
title : 'First Grid',
margins : '0 2 0 0'
});
// Creation of second grid store
var secondGridStore = Ext.create('Ext.data.Store', {
model : 'StudentDataModel'
});
// Creation of second grid
var secondGrid = Ext.create('Ext.grid.Panel', {
viewConfig : {
plugins : {
ptype : 'gridviewdragdrop',
dragGroup : 'secondGridDDGroup',
dropGroup : 'firstGridDDGroup'
},
listeners : {
drop : function(node, data, dropRec, dropPosition) {
var dropOn = dropRec ? ' ' + dropPosition + ' '
+ dropRec.get('name') : ' on empty view';
}
}
},
store : secondGridStore,
columns : [ {
header : "Student Name",
dataIndex : 'name',
id : 'name',
flex : 1,
sortable : true
}, {
header : "Age",
dataIndex : 'age',
flex : .5,
sortable : true
}, {
header : "Marks",
dataIndex : 'marks',
flex : .5,
sortable : true
} ],
stripeRows : true,
title : 'Second Grid',
margins : '0 0 0 3'
});
// Creation of a panel to show both the grids.
var displayPanel = Ext.create('Ext.Panel', {
width : 600,
height : 200,
layout : {
type : 'hbox',
align : 'stretch',
padding : 5
},
renderTo : 'panel',
defaults : {
flex : 1
},
items : [ firstGrid, secondGrid ],
dockedItems : {
xtype : 'toolbar',
dock : 'bottom',
items : [ '->', {
text : 'Reset both grids',
handler : function() {
firstGridStore.loadData(myData);
secondGridStore.removeAll();
}
} ]
}
});
});
</script>
</head>
<body>
<div id="panel"></div>
</body>
</html>
Knowledge from :
https://www.tutorialspoint.com/extjs/extjs_drag_drop.htm
I have created a data model naming StudentDataModel, which has
name,age,marks as its attributes .
Created a store called myData ie data to be inserted inside grid and a grid store called firstGridStore and secondGridStore
implemented a listener and plugin
now both [ firstGrid, secondGrid ] inside
displayPanel('Ext.Panel')
I have explained it to my best knowledge . I welcome any changed or explanation to improvise the example.
You have an example in sencha Kitchen Sink - two way drag and drop from one GridPanel to another: http://examples.sencha.com/extjs/5.1.0/examples/kitchensink/#dd-grid-to-grid
How do roweditor in Ext.create("Ext.window.Window") by extjs 4.2.
Now, I can roweditor in grid,
but I want to roweditor when Ext.create("Ext.window.Window") .
If there is an error in my code, please tell me!!
this is my extjs code,please help me!!!!!
function sync1() {
var sm = grid.getSelectionModel();
var data1=[];
var rec = sm.getSelection();
$.each(rec,function(i,item) {
data1[i]=item.data.EQ_NO;
});
store1 = Ext.create("Ext.data.Store",
{
autoLoad : true, //自動載入
autoSync : false, //false為批量修改,預設是false,true代表一經修改會自動呼叫下面的api動作
proxy : { //store資料來源地處理方式
type : "ajax",
api : { //設定四種後端操作程式 (CRUD, 增讀改刪) 即可在編輯完畢後立即更新後端資料庫,保持前後端同步
read : "pocServlet?action=test&eq_no="+ data1,
creat : undefined,
update : "pocServlet?action=updateData",
destroy : "pocServlet?action=deleteData",
},
reader : {
type : "json",
totalProperty : "totalProperty",
//root : "root",
//idProperty : "id"
},
writer : {
type : "json",
encode : true, //讓servlet能看懂
writeAllFields : true,
allowSingle : false,
root : "data" //後端getParameter的參數名稱
},
listeners : {//Exception Handler for the Ajax Request
exception : function(proxy,response,operation) {
var error = Ext.decode(response.responseText);
Ext.MessageBox.show({
title : 'RULE DETAILS REMOTE EXCEPTION',
msg : error.message,
icon : Ext.MessageBox.ERROR,
buttons : Ext.Msg.OK
});
}
}
},
listeners : {
write : function(proxy,operation) {
console.log("writeResponseText="+ operation.response.responseText);
if (operation.response.responseText != 0) {
alert("Pass");
} else {
alert("Fail");
}
}
},
fields : [
{
name : "EQ_NO"
},
{
name : "REMARK"
},
{
name : "POSITION"
},
{
name : "MODIFY_USER"
},
{
name : "MODIFY_DATE"
},
]
});
columns1 = [{
header : "EQ.NO.",
dataIndex : "EQ_NO",
width : 200,
locked : true,
}, {
header : "Remark",
dataIndex : "REMARK",
width : 200,
editor : {}
}, {
header : "Position",
dataIndex : "POSITION",
width : 200,
editor : {}
}, {
header : "Modify_User",
dataIndex : "MODIFY_USER",
width : 200
}, {
header : "Modify_Date",
dataIndex : "MODIFY_DATE",
width : 200
} ]
win = Ext.create("Ext.window.Window", {
title: "Select Visit Vessel",
layout: 'fit',
maximizable: true,
width: 900,
height: 400,
tbar: {
xtype: 'toolbar',
frame: true,
border: false,
padding: 2
},
items: [{
xtype: 'grid',
store: store1,
columns: columns1,
}]
});
win.show();
};
I made an fiddle example for you, to show how rowediting works:
https://fiddle.sencha.com/#fiddle/g2t
Basically you have to set the appropriate form field in the editor property you want to use as editing option.
I want to achieve something like this :
http://jsfiddle.net/mgill21/3HJXX/2/
But I whenever I drop a node from grid into the treecolumn (as a leaf node) I get errors such as node.updateInfo() is undefined and other node related undefined method.
Here is my code:
Ext.namespace('Ext.ux.window.ConfigureMobileApp');
Ext.require([ 'Ext.grid.*', 'Ext.data.*', 'Ext.dd.*' ]);
var firstGridStore = Ext.create('Ext.data.Store', {
storeId : 'formStore',
fields : [ 'name', 'type', 'itemId' ],
data : [ {
name : "Michael Scott",
itemId : 7,
type : "Management"
}, {
name : "Dwight Schrute",
itemId : 2,
type : "Sales"
}, {
name : "Jim Halpert",
itemId : 3,
type : "Sales"
}, {
name : "Kevin Malone",
itemId : 4,
type : "Accounting"
}, {
name : "Angela Martin",
itemId : 5,
type : "Accounting"
} ]
});
// declare the source Grid
var firstGrid = Ext.create('Ext.grid.Panel', {
viewConfig : {
plugins : {
ptype : 'gridviewdragdrop',
ddGroup : 'selDD'
}
},
store : Ext.data.StoreManager.lookup('formStore'),
columns : [ {
text : "Name",
flex : 1,
sortable : true,
dataIndex : 'name'
}, {
text : "Type",
width : 70,
sortable : true,
dataIndex : 'type'
} ],
stripeRows : true,
title : 'First Grid',
margins : '0 2 0 0',
width : 200
});
Ext.define('Resource', {
extend : 'Ext.data.Model',
fields : [ {
name : "name",
type : "string"
}, {
name : "type",
type : "string"
} ]
});
var store1 = Ext.create('Ext.data.TreeStore', {
storeId : 'treeStore',
fields : [ 'name', 'type', 'itemId' ],
root : {
expanded : true,
children : [ {
itemId : 171,
type : "comedy",
name : "Mr Bean",
children : [ {
leaf : true,
itemId : 171,
type : "actor",
name : "Rowan Atkinson"
} ],
}, {
itemId : 11,
type : "fantasy",
name : "Harry Potter",
children : [ {
itemId : 11,
leaf : true,
type : "actress",
name : "Emma Watson",
} ]
}, {
itemId : 173,
type : "Action",
name : "Fast and Furious",
children : [ {
itemId : 174,
type : "actor",
name : "Dwayne Johnson",
children : [ {
leaf : true,
itemId : 175,
type : "wrestler",
name : "The Rock"
} ]
} ]
} ]
}
});
Ext.define('Ext.ux.window.TreeGrid', {
extend : 'Ext.tree.Panel',
title : 'Demo',
height : 300,
rootVisible : true,
singleExpand : true,
store : Ext.data.StoreManager.lookup('treeStore'),
columns : [ {
xtype : 'treecolumn',
text : 'Name',
dataIndex : 'name',
width : 200
}, {
text : 'Type',
dataIndex : 'type'
} ],
initComponent : function() {
this.callParent();
},
viewConfig : {
plugins : {
ptype : 'treeviewdragdrop',
ddGroup : 'selDD'
},
listeners : {
beforedrop : function(node, data) {
debugger;
data.records[0].set('leaf', true);
data.records[0].set('expanded', false);
data.records[0].set('checked', true);
},
drop : function(node, data, dropRec, dropPosition) {
// firstGridStore.store.remove(data.records[0]);
}
}
}
});
var secondTree = Ext.create('Ext.ux.window.TreeGrid');
Ext.define('Ext.ux.window.ConfigureMobileApp', {
extend : 'Ext.window.Window',
title : 'Configure Mobile App',
height : 600,
width : 600,
layout : 'hbox',
modal : true,
closeAction : 'hide',
items : [ firstGrid, secondTree ]
});
Please help. Stuck since a very long time.
To help u out with this error i m sending u two links .These are not the proper solution but will surely guide u a way for that.
First Link
Second Link
Here is the store :
Ext.define( 'LFinanceCRM.store.Prospect', {
extend : 'Ext.data.Store',
buffered : false,
autoLoad : true,
remoteFilter : true,
storeId : 'prospect-store',
proxy : {
type : 'ajax',
url : 'services/getProspect.php',
filterParam : undefined,
limitParam : undefined,
startParam : undefined,
pageParam : undefined,
idParam : 'id',
reader : {
type : 'json',
root : 'prospect'
}
},
fields : [
{ name : 'id' },
{ name : 'value' }
],
constructor : function(){
this.callParent( arguments );
console.log( 'new ' + this.self.getName());
}
});
Here is the PHP code:
<?php
include_once 'db.php';
header( "Content-type: application/json; charset=utf-8" );
$id = #mysql_real_escape_string($_GET['id']);
$link = db_open();
$query = "SELECT name, value FROM Pairs WHERE id = '$id'";
$result = #mysql_query( $query, $link );
$pairs = array();
if( $result ) {
while( $row = mysql_fetch_assoc( $result )) {
$item = Array();
$item['id' ] = $row['name' ];
$item['value'] = $row['value'];
$pairs[] = $item;
}
}
$response = array( 'prospect' => $pairs );
print json_encode( $response );
#mysql_free_result( $result );
#mysql_close( $link );
?>
Here is the JSON received from PHP:
{prospect:[
{id:'aaa',value:'vvvv'},
{id:'bbb',value:'vvvv'},
...
{id:'yyy',value:'vvvv'},
{id:'zzz',value:'vvvv'},
}]
Here is the view:
Ext.define( 'LFinanceCRM.view.RawDataView', {
extend : 'Ext.grid.Panel',
requires :[],
alias : 'widget.raw-data-view',
autoScroll : true,
title : 'Données brutes',
columnLines : true,
viewConfig : { stripeRows : true },
store : Ext.data.StoreManager.lookup( 'prospect-store' ),
columns : [{
text : 'Nom',
dataIndex : 'name',
sortable : false,
width : '29%'
},{
text : 'Valeur',
dataIndex : 'value',
sortable : true,
width : '70%'
}],
constructor : function() {
this.callParent( arguments );
console.log('new ' + this.self.getName());
}
});
I use the MVC pattern supported by Sencha app build tool, here is the controller:
Ext.define( 'LFinanceCRM.controller.Main', {
extend : 'Ext.app.Controller',
id : 'theController',
onNonLuesSelectionChanged : function( panel, selected, eOpts ) {
console.log('onNonLuesSelectionChanged: ' + selected[0].data.id );
this.getStore('Prospect').load({
id : selected[0].data.id,
callback : function( records, operation, success ) {
var pairs = [];
for( var i = 0; i < records.length; ++i ) {
pairs.push( records[i].data );
}
Ext.ComponentQuery.query('client-view')[0].getForm().setValues( pairs );
Ext.ComponentQuery.query('immo-view' )[0].getForm().setValues( pairs );
}
});
},
onSavePairs : function() {
console.log('onSavePairs');
},
...
onMail : function() {
console.log('onMail');
},
...
stores : ['Prospect'],
constructor : function(){
this.callParent( arguments );
console.log( 'new ' + this.self.getName());
this.control({
'#ProspectsTableNonLues' : { selectionchange : this.onNonLuesSelectionChanged },
...
'#savePairsButton' : { click : this.onSavePairs },
...
'#mail' : { click : this.onMail },
});
}
});
Nothing is displayed yet!
My question is : how can I transform the data from store to feed the view with them?
Your LFinanceCRM.view.RawDataView config is not properly defined.
You should create an instance of Store to assign to the grid panel -
store : Ext.data.StoreManager.lookup( 'prospect-store' ),
should be changed to
store : Ext.create("LFinanceCRM.store.Prospect"),
Also in columns config, dataIndex should be "id" for the first column instead of "name"
{
text : 'Nom',
dataIndex : 'name',
sortable : false,
width : 200
}
should be changed to
{
text : 'Nom',
dataIndex : 'id',
sortable : false,
width : 200
}
Replace your LFinanceCRM.view.RawDataView code with this -
Ext.define( 'LFinanceCRM.view.RawDataView', {
extend : 'Ext.grid.Panel',
alias : 'widget.raw-data-view',
autoScroll : true,
title : 'Données brutes',
columnLines : true,
viewConfig : { stripeRows : true },
store : Ext.create("LFinanceCRM.store.Prospect"),
columns : [{
text : 'Nom',
dataIndex : 'id',
sortable : false,
width : 200
},{
text : 'Valeur',
dataIndex : 'value',
sortable : true,
width : 200
}],
constructor : function() {
this.callParent( arguments );
console.log('new ' + this.self.getName());
}
});
To avoid double request to the server and some other reasons, I prefer share the instance of the store betweens several views.
As pointed out by Prasad K, a mistake between name and id must be corrected.
As pointed in the documentation of Sencha Extjs4.2.2, when a store is instantiated by a controller, its id is the name of its class, even an id is set (bug?).
So the code becomes:
Ext.define( 'LFinanceCRM.view.RawDataView', {
extend : 'Ext.grid.Panel',
alias : 'widget.raw-data-view',
autoScroll : true,
title : 'Données brutes',
columnLines : true,
viewConfig : { stripeRows : true },
store : 'Prospect',
columns : [{
text : 'Nom',
dataIndex : 'id',
sortable : false,
width : '29%'
},{
text : 'Valeur',
dataIndex : 'value',
sortable : true,
width : '70%'
}],
constructor : function() {
this.callParent( arguments );
console.log('new ' + this.self.getName());
}
});
And it works!
I'm dealing with the following problem, I got the below code:
VIEW:
Ext.define('aBMin.view.Email', {
extend : 'Ext.Panel',
alias : 'widget.email-panel',
config : {
layout : "fit",
items : [{
xtype : 'toolbar',
ui : 'light',
layout : 'hbox',
docked : 'top',
items : [{
xtype : 'searchfield',
name : 'emailsearch',
width: '45%',
flex : 1
}, {
xtype : 'selectfield',
flex : 2,
name : 'emailassign',
value : 'unassigned',
options : [{
text : 'All',
value : 'all'
}, {
text : 'Assigned',
value : 'assigned'
}, {
text : 'Unassigned',
value : 'unassigned'
}]
}]
}, {
xtype : 'list',
action : 'readEmail',
itemTpl : '<tpl for="."><div class="list-pos-row"><div class="list-pos-col">{emailsubject}</div></div><div class="list-pos-row"><div class="list-pos-col list-email-date">{emaildate}</div></div><div class="list-pos-row"><div class="list-pos-col list-email-from">{emailfrom}</div></div></tpl>',
itemSelector : 'div.contact',
emptyText : 'No data found.',
onItemDisclosure : true,
store : 'Email',
plugins : [{
xclass : 'Ext.plugin.ListPaging',
autoPaging : true,
noMoreRecordsText: 'No More Records'
}],
}]
}
});
STORE:
Ext.define('aBMin.store.Email', {
extend : 'Ext.data.Store',
requires : ['aBMin.model.Email'],
config : {
autoLoad : true,
model : 'aBMin.model.Email',
remoteFilter : true,
proxy : {
type : 'direct',
extraParams : {
filter : 'unassigned'
},
directFn : ClientemailTable.getListMobile,
config : {
paramsAsHash : true,
reader : {
type : 'json',
rootProperty : 'records'
,totalCount: 'totalCount'
}
}
}
}
});
MODEL
Ext.define('aBMin.model.Email', {
extend : 'Ext.data.Model',
config : {
fields : [{
name : 'clientemailid',
type : 'int'
}, {
name : 'clientid',
type : 'int'
},{
name : 'emailsubject',
type : 'string'
}, {
name : 'emailfrom',
type : 'string'
}, {
name : 'emailbody',
type : 'string'
}, {
name : 'supportstaffid',
type : 'int'
}, {
name : 'ticketid',
type : 'int'
}, {
name : 'emaildate',
type : 'string'
}, {
name : 'isassigned',
type : 'int'
}, {
name : 'newemailnote',
type : 'string'
}],
idProperty : 'clientemailid',
proxy : {
type : 'direct',
reader : {
type : 'json'
},
api : {
read : Clientemail.readMobile,
update : Clientemail.updateMobile
}
}
}
});
now... my service returns the following JSON response:
it's returned when the app send for ex. a request with a below like params:
and still... the 'load more', won't disapear.
So I guess what I'm trying to achieve is to get rid the 'load more...' button when the store is fully loaded. I've read few other topics on StackOverflow but didn't solve the thing.
Any comments / hins appreciated.
Key should be totalProperty in reader configuration, not totalCount.
http://docs.sencha.com/touch/2.2.1/#!/api/Ext.data.reader.Reader