投放本站广告请联系:
extjscn#126.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.
*
06.
* <a href="http://extjs.com/license">http://extjs.com/license<;/a>
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.
*
006.
* <a href="http://extjs.com/license">http://extjs.com/license<;/a>
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.
};
- 关键字:
- 要发表评论,请先登录
评论
图片显示不出来
我把例子原本的放在了一个Html中,可是图片显示不出来,路径应该也没问题,那显示图片要注意哪几个地方呢,谢谢
需要后台语言支持
官方自带的例子是需要php环境才可以看到图片的,
如果您的是windows下的iis,
可以考虑下载以下这一个版本
ExtJs2.02官方实例aspx(.net)版
更多讨论请到本站新开的论坛:
http://bbs.extjs.org.cn
我注册论坛的时候有
我注册论坛的时候有错误呢