EasyUI這個框架用了好久了,總結一下遇到的問題和解決方法


1. jQuery EasyUI動態添加控件或者ajax加載頁面后不能自動渲染問題的解決方法:

我們之所以在頁面中,只要書寫相應easyui的class,Easyui就能成功渲染頁面,這是因為解析器在默認情況下,parser會在文檔裝載完成的時候($(document).ready)被調用一次,而且是渲染整個頁面。

然而當頁面裝載完后,如果用javascript生成的DOM中包含了Easyui支持控件的class,比如說,用javascript生成了以下代碼:

<a id="tt" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'">easyui</a>

 雖然頁面上有這樣的DOM了,但是沒有被渲染為Easyui的linkbutton插件,原因是Easyui並不會一直監聽頁面,所以不會主動渲染,這時候就需要手工調用Easyui的parser進行解析了。

手工調用需要注意以下幾點:

解析目標為指定DOM的所有子孫元素,不包含這個DOM自身:

比如上面代碼生成的HTML,id="tt"是我們想要的LinkButton,像下面代碼去手工解析的話是得不到你想要的結果的:

 $.parser.parse($('#tt'));

道理很簡單,parser只渲染tt的子孫元素,並不包括tt自身,而它的子孫元素並不包含任何Easyui支持的控件class,所以這個地方就得不到你想要的效果了,應該這樣寫:

 $.parser.parse($('#tt').parent());

渲染tt的父節點的所有子孫元素就可以了,不管你的javascript輸出什么DOM,直接渲染其父節點就可以保證頁面能被正確解析。

 

2. 解決EasyUI窗體阻止Asp.Net控件事件代碼:

原因是窗體內的控件不在form表單中了,無法渲染為Asp.Net控件,所以我們要手動給這個id='dialog'的窗體放到form表單中

$('#dialog').parent().appendTo($("form:first"))

 

3. 如何讓EasyUI彈出窗體跳出框架(原網址:原文鏈接):

只要在最外面的框架頁面加個div,然后用parent.div的id就可以的。但是必須得彈出框得是一個頁面(iframe指向的新頁面)。

//父頁面代碼

<div id="div_info"></div>

 

 //子頁面代碼

//外層彈出框1
function openFirstWin(url, title, width, height) {
var strWidth;
var strHeight;
if (width == null)
strWidth = 800;
else
strWidth = width;
if (height == null)
strHeight = 500;
else
strHeight = height;
if (url != null) {
//var content = '<iframe name=\"first\" scrolling=\"auto\" frameborder=\"0\" src=\"' + url + '\" style=\"width:100%\;height:100%\;\"></iframe>';
var content = createIFrame(url);
parent.$('#div_info').window({
close: false,
modal: true,
draggable: false,
title: title,
animate: true,
content: content,
minimizable: false,
width: strWidth,
height: strHeight,
top: (parent.$(parent.window).height() - height) * 0.5,
left: (parent.$(window).width() + 200 - strWidth) * 0.5
});
}
return false;
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM