[转载]ExtJs4 笔记(11) Ext.ListView、Ext.view.View 数据视图
本篇介绍两个用来展示数据的容器控件,分别是Ext.ListView和Ext.view.View。Ext.ListView就是大名鼎鼎的 Ext GridPanel的前身,不过现在的Ext4已经将它整合到GridPanel一起了,做一些简单的表格数据展示还是可以用到的。而 Ext.view.View则提供了通过模板自定义展示数据的方式,数据的展示形式不限于表格,可表现为灵活的方式,同时Ext为其提供了基本的排序分 页、项选择、事件等支持。
如果不做特殊说明,本系列文章都以mvc的服务端返回json格式的数据作为数据源的方式。
一、Ext.ListView
下面我们看看一个基本的表格数据展示实例:
[html]
<h1>ListView</h1><div id="div1" class="content"></div><span id="span1"></span>
[Js]
Ext.onReady(function () {var store = new Ext.data.JsonStore({fields: [{ name: 'IntData', type: 'int' },{ name: 'StringData', type: 'string' },{ name: 'TimeData', type: 'date' }],proxy: {type: 'ajax',url: 'ListView1Json',reader: {type: 'json',root: 'rows'}},sortInfo: { field: 'IntData', direction: 'DESC' }});store.load();var listView = Ext.create('Ext.ListView', {renderTo: "div1",store: store,multiSelect: true,emptyText: '无数据',reserveScrollOffset: true,hideHeaders: false, //是否隐藏标题columns: [{header: "IntData",dataIndex: 'IntData'}, {header: "StringData",dataIndex: 'StringData'}, {header: "TimeData",dataIndex: 'TimeData',align: 'right',xtype: 'datecolumn',format: 'm-d h:i a'}]});//当选择行改变时,输出被选行listView.on('selectionchange', function (view, selectNodes) {var msg = "";for (var i = 0; i < selectNodes.length; i++) {var index = 1 + selectNodes[i].index;if (msg == "") {msg = index;}else {msg += "," + index;}}if (msg == "") Ext.get("span1").update('当前没有选择任何数据。');else Ext.get("span1").update('当前选择了第' + msg + '行数据。');});
});
服务端模拟的数据源,以及通过MVC的jsonresult返回数据的代码:
[C# Mvc]
//控制层
public JsonResult ListView1Json()
{var json = new{rows = BasicData.Table.Take(8).Select(x => new{IntData = x.IntData,StringData = x.StringData,TimeData = x.TimeData.ToShortDateString()})};return Json(json, JsonRequestBehavior.AllowGet);
}//模拟数据
public class BasicData
{static List<BasicData> table;static public List<BasicData> Table{get{if (table == null){table = new List<BasicData>();for (int i = 0; i < 1000; i++){var obj = new BasicData(){IntData = i + 1,StringData = "测试数据" + (i + 1),TimeData = DateTime.Today.AddDays(i)};table.Add(obj);}}return table;}}public int IntData { get; set; }public string StringData { get; set; }public DateTime TimeData { get; set; }
}
来看看效果,数据已经正确加载,当我们选择行时,可以看到提示当前选择了哪些行:
再看看通过火狐调试捕获到的服务端json数据:
二、Ext.view.View
先看看实现代码:
[html]
<h1>Ext.view.View</h1><div class="content" id="div1"></div><span id="span1"></span>
[Css]
#view1 .data
{background-color:#fff;
}
#view1 tr.hover {background-color: #ddd;
}#view1 .x-item-selected {background-color:Yellow !important;
}
[Js]
Ext.Loader.setConfig({ enabled: true });
Ext.Loader.setPath('Ext.ux.DataView', '/ExtJs/ux/DataView');Ext.onReady(function () {//创建storevar store = Ext.create('Ext.data.Store', {fields: ['IntData', 'StringData', 'TimeData'],proxy: {type: 'ajax',url: 'DataView1Json',reader: {type: 'json',root: 'rows'}}});store.load();//定义模板var tpl = new Ext.XTemplate('<table cellpadding=0 cellspacing=0 border=1 width=450px>','<tr><td colspan=3 align=center><b><font color=red>Ext.view.View取自服务端的数据表</font></b></td></tr>','<tr><td style="width:20%"><b>编号</b></td><td style="width:50%"><b>消息</b></td><td style="width:30%"><b>日期</b></td>','<tpl for=".">','<tr class="data"><td class="x-editable">{IntData}</td><td>{StringData}</td><td>{TimeData}</td></tr>','</tpl>','</table>');//定义Ext.view.View控件var view = Ext.create('Ext.view.View', {renderTo: "div1",store: store,tpl: tpl,autoHeight: true,multiSelect: true,//height: 310,trackOver: true,id: 'view1',overItemCls: 'hover',itemSelector: 'tr.data',emptyText: '没有数据',plugins: [Ext.create('Ext.ux.DataView.DragSelector', {}),Ext.create('Ext.ux.DataView.LabelEditor', { dataIndex: 'IntData' })],listeners: {selectionchange: function (dataView, selectNodes) {var msg = "";for (var i = 0; i < selectNodes.length; i++) {var index = 1 + selectNodes[i].index;if (msg == "") {msg = index;}else {msg += "," + index;}}if (msg == "") Ext.get("span1").update('当前没有选择任何数据。');else Ext.get("span1").update('当前选择了第' + msg + '行数据。');}}});});
[C# Mvc]
public JsonResult DataView1Json(){var json = new{rows = BasicData.Table.Take(8).Select(x => new{IntData = x.IntData,StringData = x.StringData,TimeData = x.TimeData.ToShortDateString()})};return Json(json,JsonRequestBehavior.AllowGet);}
1.要注意的地方:
对于数据item项,我们在其html 设置 class="data",那么我们在配置项中设置:itemSelector: 'tr.data'表明了这个CSS选择器选中的元素是一个item数据项。
当item被选择时,我们需要定义一个.x-item-selected 的样式,这样才可以在展示界面表现出item项被选中时的样式。
下面我们看看效果:
2.对Ext.view.View的扩展
注意到配置项的如下代码:
[Js]
plugins: [Ext.create('Ext.ux.DataView.DragSelector', {}),Ext.create('Ext.ux.DataView.LabelEditor', { dataIndex: 'IntData' })],
这里分别引入了两个扩展支持,前者描述了数据项可以通过拖动鼠标选择多个item项,查看效果:
第二个扩展支持了对item数据项记录集的单元格数据的编辑功能,这里表明了dataIndex为'IntData'的单元格可以被编辑。注意:在模板对应的位置要引入 class="x-editable"的样式来支持。下面看看效果:
出处:[Lipan] (http://www.cnblogs.com/lipan/)
版权声明:本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任。
转载于:https://www.cnblogs.com/BTMaster/p/3734645.html
[转载]ExtJs4 笔记(11) Ext.ListView、Ext.view.View 数据视图相关推荐
- [转载]ExtJs4 笔记(8) Ext.slider 滚轴控件、 Ext.ProgressBar 进度条控件、 Ext.Editor 编辑控件...
作者:李盼(Lipan) 出处:[Lipan] (http://www.cnblogs.com/lipan/) 版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其 ...
- [转载]ExtJs4 笔记(10) Ext.tab.Panel 选项卡
作者:李盼(Lipan) 出处:[Lipan] (http://www.cnblogs.com/lipan/) 版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其 ...
- [转载]ExtJs4 笔记(4) Ext.XTemplate 模板
作者:李盼(Lipan) 出处:[Lipan] (http://www.cnblogs.com/lipan/) 版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其 ...
- [转载]ExtJs4 笔记(3) Ext.Ajax 对ajax的支持
作者:李盼(Lipan) 出处:[Lipan] (http://www.cnblogs.com/lipan/) 本篇主要介绍一下ExtJs常用的几个对JS语法的扩展支持,包括Ajax封装,函数事件操作 ...
- ExtJs4 笔记(3) Ext.Ajax 对ajax的支持
原文地址为: ExtJs4 笔记(3) Ext.Ajax 对ajax的支持 <回到系列目录 本篇主要介绍一下ExtJs常用的几个对JS语法的扩展支持,包括Ajax封装,函数事件操作封装,还有扩展 ...
- [转]ExtJs4 笔记(13) Ext.menu.Menu 菜单、Ext.draw.Component 绘图、Ext.resizer.Resizer 大小变更...
作者:李盼(Lipan) 出处:[Lipan] (http://www.cnblogs.com/lipan/) 版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其 ...
- ExtJs4 笔记(8) Ext.slider 滚轴控件、 Ext.ProgressBar 进度条控件、 Ext.Editor 编辑控件...
本篇要登场的有三个控件,分别是滚轴控件.进度条控件和编辑控件. 一.滚轴控件 Ext.slider 1.滚轴控件的定义 下面我们定义三个具有代表意义滚轴控件,分别展示滚轴横向.纵向,以及单值.多值选择 ...
- ExtJs4 笔记(5) Ext.Button 按钮
id="li2"></li><li id="li3"></li></ul></div>< ...
- [转载]ExtJs4 笔记(2) ExtJs对js基本语法扩展支持
作者:李盼(Lipan) 出处:[Lipan] (http://www.cnblogs.com/lipan/) 本篇主要介绍一下ExtJs对JS基本语法的扩展支持,包括动态加载.类的封装等. 一.动态 ...
最新文章
- 如何用RNN生成莎士比亚风格的句子?(文末赠书)
- redis入门(数据类型)
- 今日头条在消息服务平台和容灾体系建设方面的实践与思考
- JZOJ 5398. 【NOIP2017提高A组模拟10.7】Adore
- 推荐一位资深 Python 大佬
- Hadoop学习第一天
- c# controls.add 控件的使用 ,间接引用还是值引用
- Python爬虫入门并不难,甚至入门也很简单
- Mac安装Mysql(图文解说详细版)
- 安川服务器显示ab32,安川驱动器维修常见报警代码及维修方法
- java人民币金额大写_Java人民币金额数字转换成大写
- php fakepath,php 46 模板替换 上传附件fakepath json编码入库转义符
- 银行业务系统数据库设计与实现
- 台式计算机把硬盘换了怎么进系统,联想台式机怎么进bios设置硬盘启动
- 设计模式:仲裁者(Mediator)模式
- 渐进式 Web 应用程序介绍
- 路由器接交换机再接无线路由器,应该怎么设置
- Cortex-M4和Cortex-M7中的SIMD指令
- 2023年渗透测试都需要学习哪些内容?
- 高数之 左右极限求法
热门文章
- 李笑来——关于资本(阅读总结)
- 今日金融词汇--- 技术面分析
- [再寄小读者之数学篇](2014-11-02 Herglotz' trick)
- 今天为什么仍必须进行门级仿真(GLS)详细讲解
- hdu 6217 A BBP Formula 公式题
- 地鼠与植物,hash + 平衡树
- 量化投资--技术篇(5) 投资法则
- python之flask_sqlalchemy的使用及详解
- 用户选择云计算机的首要考虑因素是什么,用户选择云计算时的首要考虑因素是...
- 关于百度云大文件下载慢问题