本攻略適用於瞭解的kendo UI 的基本語法的人使用。如果還不瞭解Kendo UI的基本語法,請大力觀摹Demo ,並自己動用寫幾個控制項。 ...
本攻略適用於瞭解的kendo UI 的基本語法的人使用。如果還不瞭解Kendo UI的基本語法,請大力觀摹Demo ,並自己動用寫幾個控制項。
1、獲取Kendo UI的控制項實體,不必存成全局變數。
在控制項初始化後,想要調用控制項的實體,只需要$("#id").data("kendoGrid")如果是treeView ,data就是kendoTreeView,以此類推
2、獲取dataSource也不必使用全局變數
var grid = $("#id").data("kendoGrid"); var dataSource = grid.dataSource; // 獲取到dataSource的Bean var dataList = dataSource.view(); // 獲取到數據列表,是一個Array3、關於kendoTreeView的載入問題 在開發時,有沒有遇到過找不到樹的節點的情況?主要原因是,不展開的話,子級節點就沒有載入,找不到對應的節點。 以前我採用過先expand全部,然後再collapse全部的方法,直到發現了這個屬性……
loadOnDemand:false
API 是這樣講的
大體意思就是當父節點展開時子數據源是否懶惰載入。將此屬性設為false時,子數據源在初始化的時候會全部取出。 4、說到kendoTreeView,還有一個點,就是樹節點的展開。 樹節點API給出了三個方法,分別是expand,expandPath,expandTo。我不想在這裡比較這三個方法,因為我只用到了其中的一個方法,就可以滿足我的需求。當我知道了一個節點的id,將它展開到指定的位置。Indicates whether the child DataSources should be fetched lazily when parent groups get expanded. Setting this to false causes all child DataSources to be loaded at initialization time.
var barElement = treeView.findByUid(nodeID); //treeView就是kendoTreeView,不再多說 treeView.expandTo(treeView.dataItem(barElement));//將所有節點展開
5、關於id與uid的關係問題 在kendoUI 中,控制項實體是以uid做為唯一標識的,它是生成html時,隨機生成的。選中某個Element,kendoUI 只給出了兩種方法,findByText和findByUid,很多時候,我們用的既不是名稱(name),也不是kendoUI的uid,而是我們自己從後臺獲取的唯一標識。 以前我採用的方法是,在獲取到數據後,在dataSource的schema 中進行綁定,把dataItem的uid設置成id,後來發現一個更簡單一點的方法,就是dataSource是認id的
var dataItem = grid.dataSource.get(data.id); var element = grid.findByUid(dataItem.uid);
6、關於kendoGrid 和kendoTreeView的select()方法。 在樹與表格的聯動或者其他的情況下,需要選中某一行或都樹上的某一項 。我們可以根據上一條中的方法 ,來獲取到某個element,在我多次實驗,treeView可以採取這種選中的方式,而grid總是失敗。我採用的選中方式分別是:
grid.select("tr[data-uid='" + grid.dataSource.get(data.id).uid + "']");
treeView.select(element);
7、kendoWindow與kendoGrid聯合使用,由於定位問題,會發生異常。 我採用的是簡單粗暴地給kendoGrid中發生溢出的單位,設置高度。暫時未發現更優雅的解決方式 本來預期的是表格在紅線的位置處結束,但是它在對話框中撐出了。
#deletePersonGrid .k-grid-content{height:227px;}
8、暫時也沒有第8條,但是為了湊個整,估且計算上第八條了。