本篇介绍两个用来展示数据的容器控件,分别是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)
出处:[Lipan] (http://www.cnblogs.com/lipan/)
版权声明:本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任。

转载于:https://www.cnblogs.com/BTMaster/p/3734645.html

[转载]ExtJs4 笔记(11) Ext.ListView、Ext.view.View 数据视图相关推荐

  1. [转载]ExtJs4 笔记(8) Ext.slider 滚轴控件、 Ext.ProgressBar 进度条控件、 Ext.Editor 编辑控件...

    作者:李盼(Lipan) 出处:[Lipan] (http://www.cnblogs.com/lipan/) 版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其 ...

  2. [转载]ExtJs4 笔记(10) Ext.tab.Panel 选项卡

    作者:李盼(Lipan) 出处:[Lipan] (http://www.cnblogs.com/lipan/) 版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其 ...

  3. [转载]ExtJs4 笔记(4) Ext.XTemplate 模板

    作者:李盼(Lipan) 出处:[Lipan] (http://www.cnblogs.com/lipan/) 版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其 ...

  4. [转载]ExtJs4 笔记(3) Ext.Ajax 对ajax的支持

    作者:李盼(Lipan) 出处:[Lipan] (http://www.cnblogs.com/lipan/) 本篇主要介绍一下ExtJs常用的几个对JS语法的扩展支持,包括Ajax封装,函数事件操作 ...

  5. ExtJs4 笔记(3) Ext.Ajax 对ajax的支持

    原文地址为: ExtJs4 笔记(3) Ext.Ajax 对ajax的支持 <回到系列目录 本篇主要介绍一下ExtJs常用的几个对JS语法的扩展支持,包括Ajax封装,函数事件操作封装,还有扩展 ...

  6. [转]ExtJs4 笔记(13) Ext.menu.Menu 菜单、Ext.draw.Component 绘图、Ext.resizer.Resizer 大小变更...

    作者:李盼(Lipan) 出处:[Lipan] (http://www.cnblogs.com/lipan/) 版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其 ...

  7. ExtJs4 笔记(8) Ext.slider 滚轴控件、 Ext.ProgressBar 进度条控件、 Ext.Editor 编辑控件...

    本篇要登场的有三个控件,分别是滚轴控件.进度条控件和编辑控件. 一.滚轴控件 Ext.slider 1.滚轴控件的定义 下面我们定义三个具有代表意义滚轴控件,分别展示滚轴横向.纵向,以及单值.多值选择 ...

  8. ExtJs4 笔记(5) Ext.Button 按钮

    id="li2"></li><li id="li3"></li></ul></div>< ...

  9. [转载]ExtJs4 笔记(2) ExtJs对js基本语法扩展支持

    作者:李盼(Lipan) 出处:[Lipan] (http://www.cnblogs.com/lipan/) 本篇主要介绍一下ExtJs对JS基本语法的扩展支持,包括动态加载.类的封装等. 一.动态 ...

最新文章

  1. 如何用RNN生成莎士比亚风格的句子?(文末赠书)
  2. redis入门(数据类型)
  3. 今日头条在消息服务平台和容灾体系建设方面的实践与思考
  4. JZOJ 5398. 【NOIP2017提高A组模拟10.7】Adore
  5. 推荐一位资深 Python 大佬
  6. Hadoop学习第一天
  7. c# controls.add 控件的使用 ,间接引用还是值引用
  8. Python爬虫入门并不难,甚至入门也很简单
  9. Mac安装Mysql(图文解说详细版)
  10. 安川服务器显示ab32,安川驱动器维修常见报警代码及维修方法
  11. java人民币金额大写_Java人民币金额数字转换成大写
  12. php fakepath,php 46 模板替换 上传附件fakepath json编码入库转义符
  13. 银行业务系统数据库设计与实现
  14. 台式计算机把硬盘换了怎么进系统,联想台式机怎么进bios设置硬盘启动
  15. 设计模式:仲裁者(Mediator)模式
  16. 渐进式 Web 应用程序介绍
  17. 路由器接交换机再接无线路由器,应该怎么设置
  18. Cortex-M4和Cortex-M7中的SIMD指令
  19. 2023年渗透测试都需要学习哪些内容?
  20. 高数之 左右极限求法

热门文章

  1. 李笑来——关于资本(阅读总结)
  2. 今日金融词汇--- 技术面分析
  3. [再寄小读者之数学篇](2014-11-02 Herglotz' trick)
  4. 今天为什么仍必须进行门级仿真(GLS)详细讲解
  5. hdu 6217 A BBP Formula 公式题
  6. 地鼠与植物,hash + 平衡树
  7. 量化投资--技术篇(5) 投资法则
  8. python之flask_sqlalchemy的使用及详解
  9. 用户选择云计算机的首要考虑因素是什么,用户选择云计算时的首要考虑因素是...
  10. 关于百度云大文件下载慢问题