最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ExtJs擴展之GroupPropertyGrid代碼

 更新時間:2010年03月05日 22:38:00   作者:  
這幾天做一個Web項目,使用了ExtJs,其中有個像設計器一樣的界面,選擇界面上的內容,可以直接編輯內容的屬性,這個原本來說對于使用ExtJs還是很簡單的。
ExtJs本身就提供了豐富的空間和良好的界面開發(fā),就如同WinForm的開發(fā)一樣。但是ExtJs的空間也有不完美的地方,但是有缺點也有他自己的彌補方法。ExtJs的良好的擴展性就是ExtJs自己控件不能實現的最好的方法。
這幾個中使用最多的當屬ExtJs的PropertyGrid,ExtJs的PropertyGrid使用起來時相當簡單的,在ExtJs的官方網站上也有相應的例子,簡單的就不在敘述了。但是ExtJs本身的PropertyGrid不能支持分組,在顯示的不能將屬性進行分組,這是相當郁悶的。不知道為什么ExtJs不提供這樣的方法和接口。
于是在網上Google了許久,網上也有類似的內容,叫做《擴展組件:GroupingView+ PropertyGrid (蒙牛版)》。樓主寫的很好,但是不知道為什么沒有將源碼貼上。網上也沒有其他的好的建議。無奈中,只能自己花點時間去寫個吧。于是打開了ExtJs的源代碼,找到了PropertyGrid的源文件,一看,還是比較簡單的,
其中幾個主要內容就是:
PropertyRecord
PropertyStore
PropertyColumnModel
PropertyGrid
于是拷貝了全部的源代碼,創(chuàng)建了文件名為Ext.ux.grid.GroupPropertyGrid.js的腳本文件,并測試值,成功通過,開始閱讀PropertyGrid的源代碼,發(fā)現了以下幾個問題:
1、PropertyRecord這個種的內容太少了,僅有name和value,
2、PropertyStore使用的是Ext.data.Store,而沒有使用Ext.data.GroupingStore
3、PropertyStore使用的數據中不支持分組,并且更新的時候沒有對分組進行處理
而PropertyGrid確實繼承EditorGridPanel,這個本身就是可以支持Group分組的,這樣PropertyGrid中就不需要修改了。
下面就對這幾個問題進行修改,讓他支持分組:
1、修改PropertyRecord,添加Group字段。
復制代碼 代碼如下:

Ext.ux.grid.GroupPropertyRecord=Ext.data.Record.create(
[{name:"name",type:"string"},"value","group"]
);


2、修改PropertyStore以支持GroupingStore
復制代碼 代碼如下:

Ext.ux.grid.GroupPropertyStore = function(grid, source){
this.grid = grid;
this.store = new Ext.data.GroupingStore({
recordType : Ext.ux.grid.GroupPropertyRecord,
groupField : "group"
});
this.store.on('update', this.onUpdate, this);
if(source){
this.setSource(source);
}
Ext.ux.grid.GroupPropertyStore.superclass.constructor.call(this);
};
Ext.extend(Ext.ux.grid.GroupPropertyStore, Ext.util.Observable, {
setSource : function(o){
this.source = o;
this.store.removeAll();
var data = [];
for(var k in o){
if(this.isEditableValue(o[k])){
data.push(new Ext.ux.grid.GroupPropertyRecord({name: k, value: o[k],group:k},k));
}
else if(typeof(o[k]) == 'object'){
for(var n in o[k]){
data.push(new Ext.ux.grid.GroupPropertyRecord({name: n, value: o[k][n],group:k},k+"&&"+n));
}
}
}
this.store.loadRecords({records: data}, {}, true);
},

// private
onUpdate : function(ds, record, type){
if(type == Ext.data.Record.EDIT){
var v = record.data['value'];
var oldValue = record.modified['value'];
if(this.grid.fireEvent('beforepropertychange', this.source, record.id, v, oldValue) !== false){
if(record.id.indexOf("&&")!=-1)
{
var values = record.id.split("&&");
this.source[values[0]][values[1]] = v;
}
else
{
this.source[record.id] = v;
}
record.commit();
this.grid.fireEvent('propertychange', this.source, record.id, v, oldValue);
}else{
record.reject();
}
}
},

// private
getProperty : function(row){
return this.store.getAt(row);
},

// private
isEditableValue: function(val){
if(Ext.isDate(val)){
return true;
}else if(typeof val == 'object' || typeof val == 'function'){
return false;
}
return true;
},

// private
setValue : function(prop, value){
this.source[prop] = value;
this.store.getById(prop).set('value', value);
},

// protected - should only be called by the grid. Use grid.getSource instead.
getSource : function(){
return this.source;
}
});

主要修改了SetSource,onUpdate這兩個方法,并且修改了Store為GroupingStore。這樣在去測試,就成功的可以看到PropertyGrid已經可以分組了。效果圖如下:

這樣整個工作就完成了。

全部的源代碼下載: http://xiazai.jb51.net/201003/yuanma/GroupPropertyGrid.rar

相關文章

  • JavaScript的Ext JS框架中的GridPanel組件使用指南

    JavaScript的Ext JS框架中的GridPanel組件使用指南

    GridPanel和TreePnal功能類似,都是Ext JS中的表格便攜利器,相比之下GridPanel還要更強大并且更復雜一些,下面我們就來整理一下JavaScript的Ext JS框架中的GridPanel組件使用指南
    2016-05-05
  • ExtJs 3.1 XmlTreeLoader Example Error

    ExtJs 3.1 XmlTreeLoader Example Error

    ExtJs 3.1的XmlTreeLoader例子折騰了我近一個下午加晚上,官方的例子沒有問題,可以加載xml的數據,本地IIS死活不行
    2010-02-02
  • extjs 學習筆記 四 帶分頁的grid

    extjs 學習筆記 四 帶分頁的grid

    很多時候,我們需要顯示在grid中的數據不是短短的幾條或者幾十條,而是成千上萬條。如果讓大量的數據一股腦全都顯示在一個頁面中,可以想象會造成什么樣的用戶體驗。
    2009-10-10
  • 學習ExtJS fit布局使用說明

    學習ExtJS fit布局使用說明

    ExtJS fit布局使用說明,需要的朋友可以參考下。
    2009-10-10
  • ExtJS Store的數據訪問與更新問題

    ExtJS Store的數據訪問與更新問題

    ExtJS Store的數據訪問與更新問題,需要的朋友可以參考下。
    2010-04-04
  • extjs之去除s.gif的影響

    extjs之去除s.gif的影響

    其實這一個總是很容易解決,只要在Ext.onReady()方法之前(或者方法的第一句)加上下面這一句代碼就解決了!
    2010-12-12
  • ExtJs事件機制基本代碼模型和流程解析

    ExtJs事件機制基本代碼模型和流程解析

    最近開始自學ExtJs,下載了些視頻和上網搜了些相關文章和文檔準備好好學學,今晚第一次接觸ExtJs的事件機制,剛開始感覺有點暈,和以前所接觸的VB或是純的JAVASCRIPT的實現方式有些區(qū)別。根據一個例子,來分析和總結一下這個流程吧。
    2010-10-10
  • 學習ExtJS border布局

    學習ExtJS border布局

    ExtJS border布局使用說明,需要的朋友可以參考下。
    2009-10-10
  • Ext 表單布局實例代碼

    Ext 表單布局實例代碼

    ext下布局的實現代碼。
    2009-04-04
  • Extjs4 Treegrid 使用心得分享(經驗篇)

    Extjs4 Treegrid 使用心得分享(經驗篇)

    最近調試EXTJS 4的treegrid實例,看了很多水友的文章,以及官方的demo,沒一個可靠的,于是乎自己折騰中...感興趣的朋友可以了解下本文或許對你有所幫助
    2013-07-07

最新評論

鄂托克前旗| 明星| 固始县| 洪洞县| 崇左市| 安陆市| 鄢陵县| 中牟县| 紫金县| 买车| 平利县| 新巴尔虎右旗| 北安市| 赞皇县| 西乌珠穆沁旗| 揭阳市| 北辰区| 略阳县| 榆中县| 洛浦县| 丹阳市| 微博| 黄山市| 饶河县| 册亨县| 平乐县| 麻阳| 天峨县| 崇明县| 玛纳斯县| 永川市| 邢台市| 井研县| 平安县| 浪卡子县| 上高县| 宁武县| 康定县| 乌兰察布市| 百色市| 镇坪县|