论坛首页 Java企业应用论坛

关于 ECSide 列宽度调整的一些不足和一些建议

浏览 6921 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-01-27  
很多朋友反映 在使用ecside的列宽调节功能的时候,会出现定位不准,调整条位置错乱等bug
这篇文章主要是来更大家将一下为什么会有这个bug 以及该如何避免
同时希望有朋友帮忙想出一个好的完美的解决方案 先谢谢大家了
同时谢谢所有关注ecside的朋友们

先说一下我的建议:
1 ectable的宽度最好不要使用 百分比
2 当ectable使用百分宽度时,最好各个列也使用百分比,不要百分比和像素混合着用
(当然总和不要超过ectable的width宽度)
3 不管是使用什么样的宽度(百分比或像素),建议都要使用一个“自动宽度”的column,
就是说不要给所有的ec:column都指定width,给其中一个点“自由”,这样很多已知的关于列宽调整的问题都可以解决。

关于为什么百分比又bug

当你设置100% 的时候, table的宽度随窗口大小而变
而这时候有个问题就是  你给各个列设置的宽度不会跟着去变
例如 只有两列
各50%  页面第一次打开的时候,   大小是200像素 那么 每列100(其实不是 因为还有空白间距等, 但这里就取这么个大概数,便于理解)
当窗口变大到300的时候  列会自动重新计算 变成150;
但是此时 ecside的js脚本并不会重新计算,所以他纪录的还是原先的大小

也许你会问 为什么不重新计算,问题就是 没有一个快速简单合理的算法

例如原先窗口大小 200, 每列100
我调整成了  50 150
这时候后 窗口变大了 我该怎么重新计算这 50 和 100 才合理呢?

其实大家注意看一下 那些商业的 还有其他很多的开元的 可调节列宽的组件 都是固定宽度的
都不支持 100% ,我想大家的理由都是差不多的.

当然 如果你按我的第2 3条建议去做 很多时候不会有这个bug
   发表时间:2007-01-29  
按百分比的js代码有点bug:
ecside.js的197行:
var w=parentN.clientWidth-parseInt(parentN.style.paddingLeft)-parseInt(parentN.style.paddingLeft);
				

我修改为:

var w=parentN.clientWidth
				if (parentN.style.paddingLeft)
				{
					w=w- parseInt(parentN.style.paddingLeft);
				}
				if (parentN.style.paddingRight)
				{
					w=w- parseInt(parentN.style.paddingRight);
				}
1 请登录后投票
   发表时间:2007-01-29  
原来如此!try it!
0 请登录后投票
   发表时间:2007-01-29  
bjwulin 写道
按百分比的js代码有点bug:
ecside.js的197行:
var w=parentN.clientWidth-parseInt(parentN.style.paddingLeft)-parseInt(parentN.style.paddingLeft);
				

我修改为:

var w=parentN.clientWidth
				if (parentN.style.paddingLeft)
				{
					w=w- parseInt(parentN.style.paddingLeft);
				}
				if (parentN.style.paddingRight)
				{
					w=w- parseInt(parentN.style.paddingRight);
				}


哈哈 谢谢提醒

我又写了一个js函数
请用我写的这个替换 js自带的parseInt吧

ECSideUtil.parseIntOrZero=function(num){
	var t=parseInt(num);
	return isNaN(t)?0:t;
};
0 请登录后投票
   发表时间:2007-01-31  
ectable的width宽度用px后如果是用可伸缩的左右框架就难了
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics