TreeView是Microsoft IE WebControls中很有用的控件,应用广泛。随着TreeView打开和收拢,它所实际占据的高度也在变化,我的一个项目中,需要Treeview Control的高度随之变化,形成“紧凑”的布局。实现方法如下:
一、修改treeview.htc
treeview.htc在http://localhost/webctrl_client/1_0/中,加入如下几行:
<public:property name="TreeviewNode" GET="getTreeviewNode" /> function getTreeviewNode() { return treeviewNode; }
这是为了将隐藏的属性传递出来。
二、定义javascript函数
function AthosGetTreeViewCompactHeight(TreeviewID) { objTreeview = document.all[TreeviewID]; objTreeviewNode = objTreeview.TreeviewNode; objTreeviewDivs = objTreeviewNode.getElementsByTagName("DIV"); iCount = objTreeviewDivs.length; CompactHeight = -1; for(i=0;i<iCount;i++) { objTreeviewDiv = objTreeviewDivs[i]; iTop = objTreeviewDiv.offsetTop; iHeight = objTreeviewDiv.offsetHeight; iBottom = iTop+iHeight; if(iBottom > CompactHeight) CompactHeight = iBottom; } return CompactHeight; }
function AthosFitTreeViewHeight(TreeviewID) { objTreeview = document.all[TreeviewID]; objTreeview.style.height = String(AthosGetTreeViewCompactHeight(TreeviewID))+"px"; }
第一个函数,是取得树的实际高度。第二个函数,是重新设定树控件的高度。参数则都是树控件的id。
这样,就可以控制树控件的高度了。
|