Urgent Help! scrollX and JQuery UI together is broken?????
Urgent Help! scrollX and JQuery UI together is broken?????
UPEngineer
Posts: 93Questions: 0Answers: 1
Hello,
I have noticed that if I use the scrollX function of datatables along with a jquery ui theme, the scrollable header extends beyond the width of the table instead of scrolling. I noticed another post about this as well.
If I disable jquery ui using "bJQueryUI": false, the scrollbar functions normally. I have looked at the classes using firebug in firefox with both jquery ui enabled and jquery ui disabled and I cannot find what is causing this to happen.
Anyone have a solution???
Oh, one other thing that I should mention is that it is only broken in IE6 and IE7. It works with jquery ui enabled in IE8, FF, and Chrome.
So it is something that IE6 or IE7 doesn't like.
I would attach a pic of what I am talking about, but can't figure out how to attach a pic LOL
I have noticed that if I use the scrollX function of datatables along with a jquery ui theme, the scrollable header extends beyond the width of the table instead of scrolling. I noticed another post about this as well.
If I disable jquery ui using "bJQueryUI": false, the scrollbar functions normally. I have looked at the classes using firebug in firefox with both jquery ui enabled and jquery ui disabled and I cannot find what is causing this to happen.
Anyone have a solution???
Oh, one other thing that I should mention is that it is only broken in IE6 and IE7. It works with jquery ui enabled in IE8, FF, and Chrome.
So it is something that IE6 or IE7 doesn't like.
I would attach a pic of what I am talking about, but can't figure out how to attach a pic LOL
This discussion has been closed.
Replies
If I remove the jqueryui.css file but leave everything else the same, the problem still persists. I figured by doing this, I would remove any css problem that is causing this messed up look.
If I leave "bJQueryUI": true in my datatables declaration, the table does not display right in IE6 or IE7.
If I put "bJQueryUI": false or leave it out completely, it works fine in IE6 & IE7 as intended, just without the JQuery UI "look"
So the way I figure is something in the datatables source code is breaking the scrollX function with jqueryui set to true, I just can't find what it is doing or why it is doing it.
I have looked at firebug with jqueryui enabled and disabled and the only thing I can see CSS wise is just the jqueryui definintions and no other oddities.
Here is a screenshot on what I am talking about:
http://upengineer.org/table.gif
It is because if you set bjQueryui: true, there is two tables, first is used only with th elements for table heades and second with both - th and td - for headers (height is 0px) and for body. This is for correct view in scrolling y-axis. Without this, if you scroll y header will by scrooled too. So i thing this solution is "more beautiful". In actual source is not a way how to fix it only with configuration combinations, you have to do some hard code hack to hardly set width of columns in both tables.
Look at the topic in link, 3rd post is way how to fix this problem, but be carefull, it may damage your table. In this code hack it works, but you must for each column specify width with sWidth: "some px". Now there is still one problem, if your content of table cell is bigger than specified width body table columns will be automaticaly oversized, but header table cells not. This you can fix with oversizing sWidth setting or with css:
.dataTables_scrollBody tbody td, .dataTables_scrollHeadInner thead th div{
overflow-x: hidden;
width: inherit;
}
I hope this will help you.
AS
Hopefully Alan can come up with a more permanent fix in the core components to keep from hacking it and break something else.
Thansk
bJqueryUI:true adds the Datatables_sort_wrapper class to the table headings.
If I delete the CSS definitions for Datatables_sort_wrapper, then the tables appear to work as intended in both IE6 & IE7 as well as browsers that it worked in all along, albeit the sort icons are misaligned and not looking correctly.
Now all that I need to to is what CSS hack would apply to make them appear correctly in all browsers.
Will let all know what I find.
Scott
I have narrowed the issue to these two css code lines:
[code]
table.allclaims thead th div.DataTables_sort_wrapper {position: relative; padding-right: 20px;padding-right: 20px;}
table.allclaims thead th div.DataTables_sort_wrapper span {position: absolute;top: 50%;margin-top: -8px;right: 0;}
[/code]
If I take out the position: relative in line #1, it works great except the icons are shown half-way down the table to the right as it should by the absolute positioning in line 2.
If I take out the absolute positioning in line 2, it breaks again.
I have tried every combination of floats, positions, clears, etc. I can think of but cannot get this to work!!!
Any CSS gurus out there?
I have to fix it for IE6 because I still have a lot of users using IE6 and half of those didn't know there were upgrades to IE or there were other browsers :)
Any help is appreciated
I would have thought that something like this would do the job:
[code]
div.dataTables_scrollHead {
overflow: hidden;
zoom: 1;
}
[/code]
But perhaps IE6 is allowing the hidden elements with a position of relative or absolute (or a relative with a child absolute!) to be shown... That would be very annoying :-(.
Allan
I really don't know what is affecting what LOL.
Here is what I do know.
If bJQueryiu is set to true then it adds the Datatables_sort_wrapper divs.
This is the css definitions I have for it:
[code]
table.allclaims thead th div.DataTables_sort_wrapper {position: relative; padding-right: 20px;padding-right: 20px;}
table.allclaims thead th div.DataTables_sort_wrapper span {position: absolute;top: 50%;margin-top: -8px;right: 0;}
[/code]
It looks good in chrome, FF, and IE8 just like this.
However, in IE6 and IE 7, I am assuming they are the hidden fields I believe extend beyond the edge of the table.
Also, the header does not scroll with the table.
If I remove the position: relative from the equation, it displays correctly in all versions of IE as FF and chrome and it even scrolls as it should.
BUT, the icons are now displayed halfway down the table all the way to the right side, just as the position:absolute puts it there.
I have messed with every iteration I can think of with these css declarations and even added another position:relative to a parent container thinking it was an IE6 positioning bug that I have read about.
I have messed with widths, heights, auto this and auto that with no luck.
Since it renders correctly in some browsers, there has to be a trick or hack to make it work in others (I would like to believe).
Anyways, any help you could give would be appreciated.
BTW, I tried the code you just posted above with no luck. I am looking through my CSS and firebug to make sure I don't have another overflow:visible or scroll somewhere that is overriding the hidden attribute.
Scott
I tried every iteration of what code snippet Allan posted earlier with no results.
After looking over the internet about CSS overflow hidden issues I found something I tried.
This is what I came up with to work;
[code]
div.dataTables_scrollHead {
overflow: hidden;
position: relative;
}
[/code]
Adding the position: relative did the trick!
I had that earlier but did not have overflow:hidden on the scrollHead div.
Anwyays, anyone having this problem, give this a try!
Scott
Allan
You know I didn't try it without the overflow:hidden. I just had it in there from the code you provided earlier.
I just tried it with and without the overflow:hidden and it works just fine either way.
The position:relative is the key and won't work without this line.
Since the overflow: hidden is already provided, it is probably redundant to include it again.
I will test more, but so far it appears to have done the trick with just one line of css definition.
Thanks for your help!!!!
Scott
Sorry for the slight delay on this - I was working on a different issue in DataTables and didn't want to cross commit. However, I've confirmed the issue and your fix (nice one!) and applied it to DataTables natively. This will be included in the next release, but you can get the development version from the "nightly" part of the downloads page and it includes this fix: http://datatables.net/download/ :-)
Regards,
Allan
Posting on this thread as I have the same problem as mentioned above regarding the use of sScrollX and having the tbody scroll properly but thead just stayes in place and get disaligned from the tbody.
Using DataTables 1.7.5 and the following are my settings:
'sScrollX': '100%',
'sScrollXInner': '100%',
It is important to note that the table headers and data are generated dynamically and returned arrays applied to aoColumns and aaData. For the case of redraws, 'bDestroy': true has also been set.
Looking at the css, it definitely has to do with the 2 separate divs and one set to 'overflow' and the other set to 'hidden' with the tbody having no hard set columns widths set and the thead having hard set column widths.
Spent some time trying to hack code on the back end and trying various combinations of scroll options, to no avail. The option 'sScrollX' is currently commented out so that the thead and tbody resize until they scroll off the page out of view when adjusting browser size.
Allan
Did you find the solution to your problem? I am also having same problem. While defining 'sScrollX': '100%', table alignment get messed up.
Allan