在Asp.net 中使用 ExtJs viewport + Asp.net控件

我在Asp.net中使用ExtJs的viewport时,某块区域是用contentEl方式嵌入一块Asp.net区域,遇到一个问题:Asp.net中服务器按钮事件不能响应。

通过查看页面输出的HTML(document.body.innerText = document.body.innerHTML; )发现ExtJs viewport生成的内容是直接放在Body节点下。而Asp.net控件只有再Form下,才能响应控件的事件。

解决方法:在执行完viewport.render()后,将Body下所有内容移到Form下。 对应函数如下:

1 // 将ExtJs内容,添加到Form中

2 function InitFormControlLocation() {

3 parentTarget = document.forms[0];

4 for (i = document.body.childNodes.length - 1; i > -1; i--) {

5 tag = document.body.childNodes[i].tagName;

6 if (tag.toUpperCase() != 'FORM') {

7 obj = document.body.removeChild(document.body.childNodes[i]);

8 parentTarget.insertBefore(obj, parentTarget.firstChild);

9 }

10 }

11 }

*个人感觉ExtJs支持Asp.net的情况,但是一直没有找到方法。看了ExtJs的源码后,试着改了Ext.getBody 方法,并没有达到效果 --JoyYuan97

如果您有其他方法实现,请给我留言。