使用1
/*!
* Ext JS Library 3.3.1
* Copyright(c) 2006-2010 Sencha Inc.
* licensing@sencha.com
* http://www.sencha.com/license
*/
Ext.onReady(function(){
var xd = Ext.data;
var store = new Ext.data.JsonStore({
url: 'get-images.php',
root: 'images',
fields: ['name', 'url', {name:'size', type: 'float'}, {name:'lastmod', type:'date', dateFormat:'timestamp'}]
});
store.load();
var tpl = new Ext.XTemplate(
'<tpl for=".">',
'<div class="thumb-wrap" id="{name}">',
'<div class="thumb"><img src="{url}" title="{name}"></div>',
'<span class="x-editable">{shortName}</span></div>',
'</tpl>',
'<div class="x-clear"></div>'
);
var panel = new Ext.Panel({
id:'images-view',
frame:true,
width:535,
autoHeight:true,
collapsible:true,
layout:'fit',
title:'Simple DataView (0 items selected)',
items: new Ext.DataView({
store: store,
tpl: tpl,
autoHeight:true,
multiSelect: true,
overClass:'x-view-over',
itemSelector:'div.thumb-wrap',
emptyText: 'No images to display',
plugins: [
new Ext.DataView.DragSelector(),
new Ext.DataView.LabelEditor({dataIndex: 'name'})
],
prepareData: function(data){
data.shortName = Ext.util.Format.ellipsis(data.name, 15);
data.sizeString = Ext.util.Format.fileSize(data.size);
data.dateString = data.lastmod.format("m/d/Y g:i a");
return data;
},
listeners: {
selectionchange: {
fn: function(dv,nodes){
var l = nodes.length;
var s = l != 1 ? 's' : '';
panel.setTitle('Simple DataView ('+l+' item'+s+' selected)');
}
}
}
})
});
panel.render(document.body);
});
后面的代码是上面代码中用到的插件Ext.DataView.DragSelector()和new Ext.DataView.LabelEditor({dataIndex: 'name'})
/*!
* Ext JS Library 3.3.1
* Copyright(c) 2006-2010 Sencha Inc.
* licensing@sencha.com
* http://www.sencha.com/license
*/
/**
* @class Ext.DataView.LabelEditor
* @extends Ext.Editor
*
*/
Ext.DataView.LabelEditor = Ext.extend(Ext.Editor, {
alignment: "tl-tl",
hideEl : false,
cls: "x-small-editor",
shim: false,
completeOnEnter: true,
cancelOnEsc: true,
labelSelector: 'span.x-editable',
constructor: function(cfg, field){
Ext.DataView.LabelEditor.superclass.constructor.call(this,
field || new Ext.form.TextField({
allowBlank: false,
growMin:90,
growMax:240,
grow:true,
selectOnFocus:true
}), cfg
);
},
init : function(view){
this.view = view;
view.on('render', this.initEditor, this);
this.on('complete', this.onSave, this);
},
initEditor : function(){
this.view.on({
scope: this,
containerclick: this.doBlur,
click: this.doBlur
});
this.view.getEl().on('mousedown', this.onMouseDown, this, {delegate: this.labelSelector});
},
doBlur: function(){
if(this.editing){
this.field.blur();
}
},
onMouseDown : function(e, target){
if(!e.ctrlKey && !e.shiftKey){
var item = this.view.findItemFromChild(target);
e.stopEvent();
var record = this.view.store.getAt(this.view.indexOf(item));
this.startEdit(target, record.data[this.dataIndex]);
this.activeRecord = record;
}else{
e.preventDefault();
}
},
onSave : function(ed, value){
this.activeRecord.set(this.dataIndex, value);
}
});
Ext.DataView.DragSelector = function(cfg){
cfg = cfg || {};
var view, proxy, tracker;
var rs, bodyRegion, dragRegion = new Ext.lib.Region(0,0,0,0);
var dragSafe = cfg.dragSafe === true;
this.init = function(dataView){
view = dataView;
view.on('render', onRender);
};
function fillRegions(){
rs = [];
view.all.each(function(el){
rs[rs.length] = el.getRegion();
});
bodyRegion = view.el.getRegion();
}
function cancelClick(){
return false;
}
function onBeforeStart(e){
return !dragSafe || e.target == view.el.dom;
}
function onStart(e){
view.on('containerclick', cancelClick, view, {single:true});
if(!proxy){
proxy = view.el.createChild({cls:'x-view-selector'});
}else{
if(proxy.dom.parentNode !== view.el.dom){
view.el.dom.appendChild(proxy.dom);
}
proxy.setDisplayed('block');
}
fillRegions();
view.clearSelections();
}
function onDrag(e){
var startXY = tracker.startXY;
var xy = tracker.getXY();
var x = Math.min(startXY[0], xy[0]);
var y = Math.min(startXY[1], xy[1]);
var w = Math.abs(startXY[0] - xy[0]);
var h = Math.abs(startXY[1] - xy[1]);
dragRegion.left = x;
dragRegion.top = y;
dragRegion.right = x+w;
dragRegion.bottom = y+h;
dragRegion.constrainTo(bodyRegion);
proxy.setRegion(dragRegion);
for(var i = 0, len = rs.length; i < len; i++){
var r = rs[i], sel = dragRegion.intersect(r);
if(sel && !r.selected){
r.selected = true;
view.select(i, true);
}else if(!sel && r.selected){
r.selected = false;
view.deselect(i);
}
}
}
function onEnd(e){
if (!Ext.isIE) {
view.un('containerclick', cancelClick, view);
}
if(proxy){
proxy.setDisplayed(false);
}
}
function onRender(view){
tracker = new Ext.dd.DragTracker({
onBeforeStart: onBeforeStart,
onStart: onStart,
onDrag: onDrag,
onEnd: onEnd
});
tracker.initEl(view.el);
}
};
分享到:
相关推荐
本篇将详细阐述`DataView`的使用方法,包括其基本概念、创建、排序(Sort)、筛选(Filter)等核心知识点。 `DataView`是`DataSet`类的一个子集视图,它可以视为动态的数据表,允许开发者对数据进行灵活的操作而...
下面将详细解释DataView的使用及其主要特性。 1. **什么是DataView** DataView不是一个数据存储结构,而是DataSet的一个实时视图,它允许开发者对DataSet中的数据进行过滤、排序和分组,而无需直接操作底层数据库...
适合人群:具备一定C#编程基础,需要深入了解DataView使用的开发人员。 使用场景及目标:主要适用于需要从现有数据集中动态筛选、排序数据的应用场景,如数据报表生成功能模块,能够有效提升应用程序的功能性和灵活...
在Visual Studio 2005环境下,DataView的使用对于开发动态、交互式的Web应用程序至关重要。本文将深入探讨DataView的使用方法及其相关代码。 一、DataView的创建 首先,我们需要一个DataTable对象来初始化DataView...
### C#中灵活使用DataView #### 一、DataView简介与作用 DataView是.NET框架中的一个核心组件,主要用于对DataSet或DataTable中的数据进行筛选、排序、分组等操作,而无需更改原始数据集。这使得开发人员能够在不...
"C#使用DataBinding、DataView进行数据绑定一些实例"这个压缩包文件提供了关于如何在C#中利用DataBinding和DataView技术来实现数据绑定的具体示例。下面我们将详细探讨这两个概念以及它们在实际应用中的用法。 **...
这个练习主要涉及了两个核心概念:在线用户管理和DataView的使用。首先,我们来深入理解这两个知识点。 在线人数统计通常涉及到会话(Session)管理。在ASP.NET中,会话是一个用于存储用户特定信息的对象,它会在...
详解DataView用法 DataView是ADO.NET中的一种对象,用来表示定制的DataTable的视图。它继承了MarshalByValueComponent并实现了一组接口,使得它在...但是,需要了解DataView对象的使用方法和特点,以便更好地使用它。
### C#中DataView的使用方法详解 #### 一、DataView简介 在C#编程中,`DataView`是一个非常实用的类,它提供了一种灵活的方式来筛选、排序、分组以及搜索`DataTable`中的数据。对于那些不直接与数据库交互的数据...
### DataView详解及应用实例 #### 一、DataView概述 DataView是一种强大的.NET框架类,它主要用于处理DataTable对象。...通过本篇文章的学习,希望能够帮助您更好地理解和掌握DataView的使用技巧。
Dataview 还有很多其他的用法,例如可以使用 Dataview 的 Columns 属性来添加或删除列,使用 Rows 属性来添加或删除行,使用 Cells 属性来访问单元格等等。 Dataview 是一个功能强大且灵活的数据显示控件,可以...
这里使用了`hdnFM.Value`作为判断依据,这是一个可能来自Web页面隐藏字段的值,其值决定了过滤条件。如果`hdnFM.Value`等于"1",那么`dv1`的`RowFilter`属性被设置为`"PCDepath='"+mpcid+"'"`,这意味着所有`...
#### 三、使用DataView属性定制视图 DataView提供了多种属性来帮助开发者根据需求定制数据视图,其中最常用的是`RowFilter`和`Sort`属性。 - **RowFilter**:用于设置视图中的数据行筛选规则。这个属性接受一个...
使用DataSet时,一般使用DataAdapter(也可能是CommandBuilder)与数据源交互,用DataView对DataSet中的数据进行排序和过滤。DataSet可以被继承来建立强化类型的DataSet,用于暴露表、行、列作为强化类型对象属性。...
虽然`DataView`提供了强大的功能,但在处理大量数据时,需要谨慎使用排序和过滤,因为这些操作可能对性能产生影响。 8. **数据绑定事件** 当`DataView`发生变化时,可以监听其事件,如`ListChanged`事件,以便在...
`DataView`对象通常与`DataTable`一起使用,作为`DataTable`的一个动态视图。 在描述中提到的"各種資源庫(數據庫)",这表明`DataView`可以与多种数据库进行交互,如SQL Server、Oracle、MySQL等,通过ADO.NET的数据...
DataView是.NET框架中用于数据展示和操作的重要组件,尤其在数据绑定场景中非常常见。它提供了一种灵活的方式来处理和控制数据源,如DataTable,允许用户进行排序、筛选、搜索和编辑数据。DataView并不是数据存储...
如果需要对数据进行排序,可以使用`Ext.data.Store`的`sort`方法,传入排序字段和排序方向。例如,按id字段升序排序可以写为:`store.sort('id', 'ASC')`。 **选取方式** dataview组件提供多种选择数据的方式,这取...