ext-ui.com

数据视图(DataView)


演示(demo)地址在文章最后.

效果图如下

主要文件data-view.html,data-view.js,data-view-plugins.js。

data-view.html

01.<html>
02.<head>
03.<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
04.    <title>DataView Example</title>
05.    <link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css" />
06. 
07.    <!-- GC -->
08.    <!-- LIBS -->
09.    <script type="text/javascript" src="../../adapter/ext/ext-base.js"></script>
10.    <!-- ENDLIBS -->
11. 
12.    <script type="text/javascript" src="../../ext-all.js"></script>
13. 
14.    <script type="text/javascript" src="data-view-plugins.js"></script>
15.    <script type="text/javascript" src="data-view.js"></script>
16.    <link rel="stylesheet" type="text/css" href="data-view.css" />
17.    <!-- Common Styles for the examples -->
18.    <link rel="stylesheet" type="text/css" href="../examples.css" />
19.</head>
20.<body>
21.<script type="text/javascript" src="../examples.js"></script><!-- EXAMPLES -->
22. 
23.<h1>DataView Example</h1>
24.<p>This example shows how to use an Ext.DataView.</p>
25. 
26.</body>
27.</html>

data-view.js

01./*
02. * Ext JS Library 2.0.2
03. * Copyright(c) 2006-2008, Ext JS, LLC.
04. * <script type="text/javascript">eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%6c%69%63%65%6e%73%69%6e%67%40%65%78%74%6a%73%2e%63%6f%6d%22%3e%6c%69%63%65%6e%73%69%6e%67%40%65%78%74%6a%73%2e%63%6f%6d%3c%2f%61%3e%27%29%3b'))</script><a href="mailto:licensing@extjs.com">licensing@extjs.com</a>
05. *
07. */
08. 
09.Ext.onReady(function(){
10.    var xd = Ext.data;
11. 
12.    var store = new Ext.data.JsonStore({
13.        url: 'get-images.php',
14.        root: 'images',
15.        fields: ['name', 'url', {name:'size', type: 'float'}, {name:'lastmod', type:'date', dateFormat:'timestamp'}]
16.    });
17.    store.load();
18. 
19.    var tpl = new Ext.XTemplate(
20.        '<tpl for=".">',
21.            '<div class="thumb-wrap" id="{name}">',
22.            '<div class="thumb"><img src="{url}" title="{name}"></div>',
23.            '<span class="x-editable">{shortName}</span></div>',
24.        '</tpl>',
25.        '<div class="x-clear"></div>'
26.    );
27. 
28.    var panel = new Ext.Panel({
29.        id:'images-view',
30.        frame:true,
31.        width:535,
32.        autoHeight:true,
33.        collapsible:true,
34.        layout:'fit',
35.        title:'Simple DataView with editable labels, multi and drag selection',
36. 
37.        items: new Ext.DataView({
38.            store: store,
39.            tpl: tpl,
40.            autoHeight:true,
41.            multiSelect: true,
42.            overClass:'x-view-over',
43.            itemSelector:'div.thumb-wrap',
44.            emptyText: 'No images to display',
45. 
46.            plugins: [
47.                new Ext.DataView.DragSelector(),
48.                new Ext.DataView.LabelEditor({dataIndex: 'name'})
49.            ],
50. 
51.            prepareData: function(data){
52.                data.shortName = Ext.util.Format.ellipsis(data.name, 15);
53.                data.sizeString = Ext.util.Format.fileSize(data.size);
54.                data.dateString = data.lastmod.format("m/d/Y g:i a");
55.                return data;
56.            }
57.        })
58.    });
59.    panel.render(document.body);
60. 
61.});

data-view-plugins.js

001./*
002. * Ext JS Library 2.0.2
003. * Copyright(c) 2006-2008, Ext JS, LLC.
004. * <script type="text/javascript">eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%6c%69%63%65%6e%73%69%6e%67%40%65%78%74%6a%73%2e%63%6f%6d%22%3e%6c%69%63%65%6e%73%69%6e%67%40%65%78%74%6a%73%2e%63%6f%6d%3c%2f%61%3e%27%29%3b'))</script><a href="mailto:licensing@extjs.com">licensing@extjs.com</a>
005. *
007. */
008. 
009. 
010.Ext.DataView.LabelEditor = function(cfg, field){
011.    Ext.DataView.LabelEditor.superclass.constructor.call(this,
012.        field || new Ext.form.TextField({
013.            allowBlank: false,
014.            growMin:90,
015.            growMax:240,
016.            grow:true,
017.            selectOnFocus:true
018.        }), cfg
019.    );
020.}
021. 
022.Ext.extend(Ext.DataView.LabelEditor, Ext.Editor, {
023.    alignment: "tl-tl",
024.    hideEl : false,
025.    cls: "x-small-editor",
026.    shim: false,
027.    completeOnEnter: true,
028.    cancelOnEsc: true,
029.    labelSelector: 'span.x-editable',
030. 
031.    init : function(view){
032.        this.view = view;
033.        view.on('render', this.initEditor, this);
034.        this.on('complete', this.onSave, this);
035.    },
036. 
037.    initEditor : function(){
038.        this.view.getEl().on('mousedown', this.onMouseDown, this, {delegate: this.labelSelector});
039.    },
040. 
041.    onMouseDown : function(e, target){
042.        if(!e.ctrlKey && !e.shiftKey){
043.            var item = this.view.findItemFromChild(target);
044.            e.stopEvent();
045.            var record = this.view.store.getAt(this.view.indexOf(item));
046.            this.startEdit(target, record.data[this.dataIndex]);
047.            this.activeRecord = record;
048.        }else{
049.            e.preventDefault();
050.        }
051.    },
052. 
053.    onSave : function(ed, value){
054.        this.activeRecord.set(this.dataIndex, value);
055.    }
056.});
057. 
058. 
059.Ext.DataView.DragSelector = function(cfg){
060.    cfg = cfg || {};
061.    var view, regions, proxy, tracker;
062.    var rs, bodyRegion, dragRegion = new Ext.lib.Region(0,0,0,0);
063.    var dragSafe = cfg.dragSafe === true;
064. 
065.    this.init = function(dataView){
066.        view = dataView;
067.        view.on('render', onRender);
068.    };
069. 
070.    function fillRegions(){
071.        rs = [];
072.        view.all.each(function(el){
073.            rs[rs.length] = el.getRegion();
074.        });
075.        bodyRegion = view.el.getRegion();
076.    }
077. 
078.    function cancelClick(){
079.        return false;
080.    }
081. 
082.    function onBeforeStart(e){
083.        return !dragSafe || e.target == view.el.dom;
084.    }
085. 
086.    function onStart(e){
087.        view.on('containerclick', cancelClick, view, {single:true});
088.        if(!proxy){
089.            proxy = view.el.createChild({cls:'x-view-selector'});
090.        }else{
091.            proxy.setDisplayed('block');
092.        }
093.        fillRegions();
094.        view.clearSelections();
095.    }
096. 
097.    function onDrag(e){
098.        var startXY = tracker.startXY;
099.        var xy = tracker.getXY();
100. 
101.        var x = Math.min(startXY[0], xy[0]);
102.        var y = Math.min(startXY[1], xy[1]);
103.        var w = Math.abs(startXY[0] - xy[0]);
104.        var h = Math.abs(startXY[1] - xy[1]);
105. 
106.        dragRegion.left = x;
107.        dragRegion.top = y;
108.        dragRegion.right = x+w;
109.        dragRegion.bottom = y+h;
110. 
111.        dragRegion.constrainTo(bodyRegion);
112.        proxy.setRegion(dragRegion);
113. 
114.        for(var i = 0, len = rs.length; i < len; i++){
115.            var r = rs[i], sel = dragRegion.intersect(r);
116.            if(sel && !r.selected){
117.                r.selected = true;
118.                view.select(i, true);
119.            }else if(!sel && r.selected){
120.                r.selected = false;
121.                view.deselect(i);
122.            }
123.        }
124.    }
125. 
126.    function onEnd(e){
127.        if(proxy){
128.            proxy.setDisplayed(false);
129.        }
130.    }
131. 
132.    function onRender(view){
133.        tracker = new Ext.dd.DragTracker({
134.            onBeforeStart: onBeforeStart,
135.            onStart: onStart,
136.            onDrag: onDrag,
137.            onEnd: onEnd
138.        });
139.        tracker.initEl(view.el);
140.    }
141.};

演示地址:http://extjs.org.cn/extjs/examples/view/data-view.html

评论

图片显示不出来

我把例子原本的放在了一个Html中,可是图片显示不出来,路径应该也没问题,那显示图片要注意哪几个地方呢,谢谢

需要后台语言支持

官方自带的例子是需要php环境才可以看到图片的,

如果您的是windows下的iis,

可以考虑下载以下这一个版本
ExtJs2.02官方实例aspx(.net)版

更多讨论请到本站新开的论坛:
http://bbs.extjs.org.cn

我注册论坛的时候有

我注册论坛的时候有错误呢