PDA

View Full Version : Reconfigure method in GridPanel does not work in the IE8



paweluz
26 Oct 2010, 12:36 AM
Hi

I have a problem with reconfigure method of a grid panel. It works under the Firefox but in the IE8 it is causing the error like that:


Message: Invalid argument.
Line: 68943
Char: 9
Code: 0
URI: http://localhost:9090/GSS-Web-NIS/lib/ext/ext-all-debug-w-comments.js
This is in the method:

updateHeaders : function(){
this.innerHd.firstChild.innerHTML = this.renderHeaders();
this.innerHd.firstChild.style.width = this.getOffsetWidth(); // THIS LINE!!!!!!!!!!!!!
this.innerHd.firstChild.firstChild.style.width = this.getTotalWidth();
},
I am using the ExtJS version 3.2.1. I call the reconfigure method with this same column model that looks like that:


myColumnModel= new Ext.grid.ColumnModel({
columns: [{
header: 'Data',
dataIndex: 'Data',
resizable: false,
width: '90%'
}]
});
I just use one column. In the store I just change the URL. So the store looks exactly this same except from the part with URL. The definition of my store looks like that:


var myStore= new Ext.data.JsonStore({
proxy: new Ext.data.HttpProxy({

// First store
url: 'REST/dataFromDb',

// Second store
url: 'REST/dataFromDb2',

method: 'GET',
disableCache: false,
autoAbort: true
}),
root: 'result',
fields: ['Data','id','age']
});
So the only different is just the URL. Does anyone know why the method reconfigure is casing the problem in the IE8. Maybe there is another way just to changing the URL parameter of a proxy in the grid? I found just that solution...

Any help would be great

Regards,
Poul

Animal
26 Oct 2010, 1:04 AM
Have you debugged?

It's probably a trailing comma somewhere.

paweluz
26 Oct 2010, 2:15 AM
Have you debugged?

It's probably a trailing comma somewhere

I have been debugging this stuff for a while in a FireFox and in a IE8 and I found something. In IE8 as I said that I have error in the method updateHeaders.
The line this.innerHd.firstChild.style.width = this.getOffsetWidth() is called, but the next line is never called!! The next line would be this: this.innerHd.firstChild.firstChild.style.width = this.getTotalWidth(); When I add a break point in this line the debugging never starts...it does not reach this line... When I check in Firefox it is working correctly... This line is called (reached).
In the IE8 the methods are called in that order:
- updateHeaders
- getOffsetWidth
- getTotalWidth
- isHidden
- getColumnWidth
- getTotalWidth
- getScrollOffset
- getScrollBarWidth
- num
- isempty
- THE END
In FireFox list of method that is called is a little longer...

What is wrong? Maybe be there is another simpler way of changing the URL in the proxy? I do not know what to do with error...

Do you know maybe what is wrong?

Regards,
Poul

Animal
26 Oct 2010, 2:19 AM
So you set it to break when it encountered that error, and saw what it was referencing that was invalid?

paweluz
26 Oct 2010, 3:00 AM
The last method that is called in the IE8 is:


num : function(v, defaultValue){
v = Number(Ext.isEmpty(v) || Ext.isArray(v) || typeof v == 'boolean' || (typeof v == 'string' && v.trim().length == 0) ? NaN : v);
return isNaN(v) ? defaultValue : v;
},It is invoked in the method getScrollOffset that looks like that:

getScrollOffset: function(){
return Ext.num(this.scrollOffset, Ext.getScrollBarWidth());
},
It returns value 19 (always). In Firefox the returned value is this same, also 19! The one difference is that in Firefox after calling the method num the debugger comes back to the getScrollOffset, and in the IE8 it does not. It just finish debugging and goes back to the application. I have no idea why that is happening... I was looking for some comma mistakes or something similar, but I could not find any...

Do you have any ideas why this is happening?

Regards,
Poul

Animal
26 Oct 2010, 4:01 AM
This is all just about reloading the Store with different PARAMETERS??? Really???

paweluz
26 Oct 2010, 4:03 AM
I was not able to figure it out how come it does not work. I changed my approach and I just change the URL in proxy for my store. It is described in here: http://www.sencha.com/forum/showthread.php?109525-EditorGridPanel-and-HttpProxy-How-to-change-the-proxy-URL-dynamically

Thanks Animal for your help and time!

Regards,
Poul

Animal
26 Oct 2010, 4:04 AM
Why not just reload the Store with different parameters?

paweluz
26 Oct 2010, 4:39 AM
Yes, I know it now. First solution that I found was the reconfigure method for all grid. It was actually to big for my porpoise. But I did not know any other solutions... After I did some research I found out about the method setURL for proxy that is exactly this what I wanted :) I still wander why the previous solution was not working in IE8, but fortunately I do need it now. Thanks one more time for your help!

Animal
26 Oct 2010, 4:41 AM
No, changing the URL is not what you want.

Just pass different parameters!

wewebu
8 Sep 2011, 3:53 AM
Hello,

I have almost the same problem, only in IE, when using "reconfigure" method.
In my case, the column model is changed, so I think that I am enforced somehow to use this method.
Everything is fine in all browsers except IE, where the "updateHeaders" method fails with the error " 'this.innerHd.firstChild' is null or not an object"

I am using extjs 3.4.0.

Any solution to this problem?
Thank you very much.
Doru