EXT 表格jquery 获取表格数据数据失败

extjs表格(表格后台数据读,分页),树(后台数据读取,复选框联动)的基本操作示例 - 下载频道 - CSDN.NET
&&&&extjs表格(表格后台数据读,分页),树(后台数据读取,复选框联动)的基本操作示例
&extjs表格(表格后台数据读,分页),树(后台数据读取,复选框联动)的基本操作示例
实现了从后台读取数据,并进行分页显示,从后台读取treepanel数据,显示,并实现了点击节点复选框的时候,出现父节点和子节点的联动,运行环境是vs2008
若举报审核通过,可奖励20下载分
被举报人:
shallo_888
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
评价资源返积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
开发技术下载排行
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
extjs表格(表格后台数据读,分页),树(后台数据读取,复选框联动)的基本操作示例
所需积分:6
剩余积分:
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
VIP服务公告:ExtJS中表格控件的使用,属性设置和数据的获取ExtJ
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
ExtJS中表格控件的使用,属性设置和数据的获取
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口ExtAspNet为表格控件提供非常丰富的扩展列,这些扩展列不仅丰富了数据展示的形式,而且极大地减少了程序员的编码量。
序号列与复选列
首先来看下序号列和复选列的实际效果:
序号列和复选列只能出现在表格最前面的两个位置,并且启用这两个列的方法也非常简单:
只需要设置表格的EnableRowNumber和EnableCheckBoxSelect属性为true即可!
注意:序号列表示的是当前页的顺序,因此即使表格翻页后依然是从1开始的。
单选模式与多选模式
表格默认是多选模式,也就是可以一次选择多条数据,选择多条数据的方式和Windows下选择文件的方式类似:
多次点击复选列的复选框来选择多行数据;
按下Shift键选择连续的多行数据;
按下Control键选择不连续的多行数据。
注意:点击另一行会取消之前的所有选中行数据!
如果想启用表格的单选模式,只需要设置EnableMultiSelect属性为false即可!
如何在后台获得选中的行?
protected void Button1_Click(object sender, EventArgs e)
StringBuilder sb = new StringBuilder();
int[] selections = Grid1.SelectedRowIndexA
foreach (int rowIndex in selections)
sb.AppendFormat("行索引:{0} 用户名:{1}&br /&", rowIndex, Grid1.DataKeys[rowIndex][1]);
labResult.Text = sb.ToString();
通过如下步骤获得选中行的数据:
通过表格的SelectedRowIndexArray获得选中行的索引号列表;
通过表格的DataKeys(二维数组)获取本行的数据列表,这就需要事先设置表格的DataKeyNames属性(本例中是"Id,Name")。
先来看下行扩展列的显示效果:
看似复杂,其实实现起来相当的简单,行扩展列其实就是一个带RenderAsRowExpander属性的模板列:
&ext:Grid ID="Grid1" ShowBorder="true" ShowHeader="true" Title="表格" Width="800px"
runat="server" DataKeyNames="Id,Name"&
&ext:TemplateField RenderAsRowExpander="true"&
&ItemTemplate&
&div class="expander"&
&strong&姓名:&/strong&&%# Eval("Name") %&&/p&
&strong&简介:&/strong&&%# Eval("Desc") %&&/p&
&/ItemTemplate&
&/ext:TemplateField&
&ext:TemplateField Width="60px"&
&ItemTemplate&
&asp:Label ID="Label1" runat="server" Text='&%# Container.DataItemIndex + 1 %&'&&/asp:Label&
&/ItemTemplate&
&/ext:TemplateField&
&ext:BoundField Width="100px" DataField="Name" DataFormatString="{0}" HeaderText="姓名" /&
// 省略其他列...
&/Columns&
&/ext:Grid&
行扩展列默认是折叠起来的,如何让所有的行扩展列默认打开呢?
ExtAspNet考虑到了这个实际的需求,只需要设置一个属性ExpandAllRowExpanders即可实现如下效果:
模拟树列是ExtAspNet的一个简单创新,却非常有用,来看实际效果:
大家也可以先考虑下如何实现这个效果,为了尽量和普通表格的数据绑定保持一致,数据源也必须是DataTable或者IEnumerable。
有了这个设定,问题就简单了,我们只需要为每行数据准备一个表示树层次的字段即可。
就本例而言,如果&中国&行的树层次为0,则有如下简单的规则:
& 河南省:1
&&&&& 驻马店市:2
&&&&& 漯河市:2
& 安徽省:1
&&&&& 合肥市:2
&&&&& 黄山市:2
下面来看下模拟此结构的数据实现代码:
private static DataTable IniGrid()
DataTable table = new DataTable();
DataColumn column1 = new DataColumn("Id", typeof(int));
DataColumn column2 = new DataColumn("Name", typeof(String));
DataColumn column3 = new DataColumn("Group", typeof(String));
DataColumn column4 = new DataColumn("TreeLevel", typeof(int));
table.Columns.Add(column1);
table.Columns.Add(column2);
table.Columns.Add(column3);
table.Columns.Add(column4);
DataRow row = table.NewRow();
row[0] = 101;
row[1] = "中国";
row[2] = "1";
row[3] = 0;
table.Rows.Add(row);
row = table.NewRow();
row[0] = 102;
row[1] = "河南省";
row[2] = "2";
row[3] = 1;
table.Rows.Add(row);
row = table.NewRow();
row[0] = 103;
row[1] = "驻马店市";
row[2] = "3";
row[3] = 2;
table.Rows.Add(row);
row = table.NewRow();
row[0] = 104;
row[1] = "漯河市";
row[2] = "3";
row[3] = 2;
table.Rows.Add(row);
row = table.NewRow();
row[0] = 105;
row[1] = "安徽省";
row[2] = "2";
row[3] = 1;
table.Rows.Add(row);
row = table.NewRow();
row[0] = 106;
row[1] = "合肥市";
row[2] = "3";
row[3] = 2;
table.Rows.Add(row);
row = table.NewRow();
row[0] = 107;
row[1] = "黄山市";
row[2] = "3";
row[3] = 2;
table.Rows.Add(row);
来看下ASPX标签结构,我们需要为&地区&列指定要绑定的树层次字段:
&ext:Grid ID="Grid1" Title="表格" ShowBorder="true" ShowHeader="true" AutoHeight="true"
runat="server" EnableCheckBoxSelect="True" DataKeyNames="Id,Name" Width="800px"
EnableRowNumber="True"&
&ext:BoundField DataField="Name" DataSimulateTreeLevelField="TreeLevel" DataFormatString="{0}"
HeaderText="地区" ExpandUnusedSpace="True" /&
&ext:ImageField Width="60px" DataImageUrlField="Group" DataImageUrlFormatString="~/images/16/{0}.png"
HeaderText="分组"&&/ext:ImageField&
&/Columns&
&/ext:Grid&
注意:&地区&列的DataSimulateTreeLevelField属性将此列转换为模拟树的列。
弹出窗体列
弹出窗口列,顾名思义就是点击可以弹出窗体的列,其实用模板列也完全可以实现,只不过弹出窗体列可以简化我们的代码编写。
首先看下显示效果:
要实现此效果,页面上必须事先定义一个隐藏的Window控件,如下所示:
&ext:Window ID="Window1" Title="编辑" Popup="false" EnableIFrame="true" runat="server"
CloseAction="HidePostBack" EnableConfirmOnClose="true" IFrameUrl="about:blank"
EnableMaximize="true" EnableResize="true" OnClose="Window1_Close" Target="Top"
IsModal="True" Width="750px" Height="450px"&
&/ext:Window&
关于Window控件,后面会有专门篇幅讲解,这就不多说。
而弹出窗体列的作用就是生成一个可以点击的锚点链接,当用户点击时在客户端直接弹出这个窗体。
模板列实现弹出窗体列的功能
首先来看下使用模板列的ASPX标签定义:
&ext:TemplateField HeaderText="模板列" Width="60px"&
&ItemTemplate&
&a href="javascript:&%# GetEditUrl(Eval("Id"), Eval("Name")) %&"&编辑&/a&
&/ItemTemplate&
&/ext:TemplateField&
再来看下GetEditUrl函数的定义:
protected string GetEditUrl(object id, object name)
return Window1.GetShowReference("grid_iframe_window.aspx?id=" + id, "编辑 - " + name);
弹出窗体列的结构
而相同的功能使用弹出窗体列,只需要ASPX标签定义就行了,而且可以方便地定义弹出窗体标题,IFrame地址等属性:
&ext:WindowField ColumnID="myWindowField" Width="60px" WindowID="Window1" HeaderText="窗口列"
Icon="Pencil" ToolTip="编辑" DataTextFormatString="{0}" DataIFrameUrlFields="Id"
DataIFrameUrlFormatString="grid_iframe_window.aspx?id={0}" DataWindowTitleField="Name"
DataWindowTitleFormatString="编辑 - {0}" /&
ExtAspNet对表格的扩展列不仅丰富了数据展现的形式,而且极大的方便了代码的编写。特别是序号列、复选列以及弹出窗体列在实际项目中非常实用,需要大家熟练掌握。下一篇文章,我们会详细讨论表格中的各种事件,其实我们在上一篇文章已经接触到了排序和翻页两种事件,除此之外还有更多的事件等待着我们去探索学习。
注:《ExtAspNet秘密花园》系列文章由原创,博客园首发,转载请注明出处。
阅读(...) 评论()当前访客身份:游客 [
当前位置:
将数据库数据导出为Excel格式的表格想必是大家很常用的功能。那么在Extjs又该怎么鸟呢?先前在网上查的方案是用其自带的com对象,浪费了好几天时间连生成一个excel模板都没搞定,无奈放弃。继而大牛推荐用Aspose.Cells,发现非常简单而且效果也不错。
&=DataSource.Field,&=[DataSource].[Field]是对DataTable和几何类型的引用,将会从当前行开始竖直向下生成多行数据。
&=$data:是对变量或数组的引用。数组存在skip,horizontal等属性,具体参见
&=&=动态公式计算;{r}当前行,{c}当前列,{-n},{n}当前行或列的偏移量前n或后n。
&==是动态计算,如excel,if等语句。(if(logic_test,true_value,false_value))
首先下载一个Aspose.Cells.dll文件并包含在项目中。
在Extjs中的导出函数如下
//执行导出的操作
exportExcel: function () {
if (!Ext.fly('frmDummy')) {
var frm = document.createElement('form');
frm.id = 'frmDummy';
frm.name =
frm.className = 'x-hidden';
document.body.appendChild(frm);
Ext.Ajax.request({
url: 'URL/Export.aspx',
method: 'POST',
form: Ext.fly('frmDummy'),
isUpload: true,
params: { file: 'UsersDesigner', name: escape('用户') }//file为excel模板的文件名,name为导出后的excel文件名
后台获取数据在Export.cs示例代码如下
using System.D
using System.C
using System.C
using System.W
using System.Web.S
using System.Web.UI;
using System.Web.UI.WebC
using System.Web.UI.WebControls.WebP
using System.Web.UI.HtmlC
using System.R
using System.D
using System.Data.SqlC
using System.T
using Aspose.C
public partial class URL_Export : System.Web.UI.Page
protected void Page_Load(object sender, EventArgs e)
string file = Request.Form[&file&];
string name = Server.UrlDecode(Request.Form[&name&].ToString());
DataSet ds = ;//要导出的数据源
WorkbookDesigner designer = new WorkbookDesigner();
string path = MapPath(&~/Designer/& + file + &.xls&);//模版路径
designer.Open(path);
designer.SetDataSource(ds);
designer.SetDataSource(&subtitle&, subtitle);
designer.Process();
HttpBrowserCapabilities bc = HttpContext.Current.Request.B
string filename = &&;
if (bc.Browser == &IE&)
filename = HttpUtility.UrlEncode(name, System.Text.Encoding.UTF8) + &.xls&;
filename = name + &.xls&;
designer.Save(filename, SaveType.OpenInExcel, FileFormatType.Default, this.Response);
Exel模板:
自动生成序号一列写法为:&=&=IF($A{-1}=&序号&,1,($A{-1}+1))
列求和:&=&=sum(C4:C{-1})
生成的Excel:
需要注意的是,后台生成的dataset名称(Table)要与Excel模板中的一致。
原文链接:
共有0个评论
有什么技术问题吗?
晨曦之光的其他问题
类似的话题【Itext】解决Itext5大并发大数据量下输出PDF发生内存溢出outofmemery异常 - 推酷
【Itext】解决Itext5大并发大数据量下输出PDF发生内存溢出outofmemery异常
关键字 itext5 outofmemery 内存溢出 大数据 高并发 多线程 pdf 导出 报表 itext 并发
大数据量高并发的时候,Itext5会发生内存溢出,outofmemery异常,经过大规模的内存检查,发现Itext在生成表格的时候,使用了很多的HashMap做数据存储,从而造成了内存爆满,没有及时释放掉,虽然官方说可以利用table.setComplite(false)这个方法去释放内存,但是经过实际演示,发现效果不佳,因为高并发的时候,此方法失效。1000个用户同时访问服务器,它根本来不及释放。此时我们就需要增加一个方法,自己去释放掉那些已经加入到table中的Cell对象,使得系统平稳运行。只要释放及时,几万几十万并发都没问题?当然最好先扔给它2G jvm,不要太吝啬。生成pdf的时候,cpu占用比较高,因为IO操作。不过用了本文方法,内存几乎很平稳。这就够了。
在读&&iText in Action 2nd&4.3节(Dealing with large tables)的时候,书上写道:itext5PdfPTable实现了ILargElement的接口,只需要我们手动设置datatable.setComplete(false);之后,它就可以自动将表格元素输出到document中,但是,对,就是这个但是!!我们的cell之多,多到它来不及去放进去,比如我并发100个线程去访问它,用原来的官方的方法,别说tomcat受不了,was也照样挂掉,给他8个G,它也照样吃掉,而且服务卡死。你说这样的产品放出去,我放心不?
于是,我大量Google,大量百度,大量Csdn,大量JavaEye,多少次的说多了都是泪,最后,yes,就是最后,我Tm什么法子都想了,list清空,指针赋null,优化程序循环,优化bufferedOutPutStream输出,优化下载,就差给Itext作者写信了!!现在解决了这个高并发的问题,可以边生成边输出到IO磁盘,防止以前高并发,大家发生死锁,围着内存和IO卡死。
兄居然也遇到了这个问题,而且这个博客我都不知道怎么搜到的,他中间用到了自己写的一个方法,根据行号去定次数,比如定义1000行一次释放table,将table先放到document,正好document中查到了你的table用datatable.setComplete(false)方法,于是它就开始往文件里面搬运数据,之后,我们删掉这些已经放进去的元素,用table.deleteBodyRows();好,这样产生了一个新的问题,就是每隔1000行,产生一个表头,于是无名兄又用到了table.setSkipFirstHeader(true);ok至此,解决全部问题,但是后续问题,无名兄遇到了,万一某一行刚刚好是最后一页,那么后续的表格没有了表头,这个问题我没遇到,因为我用到了另一个方法,就是& datatable.setHeaderRows(headerRows);// 设置头几行为表头(已经判断好了前几行为表头),这样我们就搞定了这个itext内存溢出的大问题!!也许很多人都不会遇到这个错误,但是我保证这个内存溢出会让你恨死Itext。
代码实现如下贴出,放在你生成表格的逻辑里。
//for循环中添加如下代码
int _MAX_ROWS = 1000;//最大行数,之后清理
int row_count = 0;//初始值
if (++row_count % _MAX_ROWS == 0) {
//datatable是我的一个PdfPTable的new出来的一个实例
// add table to Document
document.add(datatable);
// delete _MAX_ROWS from table to free memory
datatable.deleteBodyRows();
// let iText manage when table header written
datatable.setSkipFirstHeader(true);//防止释放后一页出现两次表头。
或者另一种释放的算法:
int fregmentSize = 1000;// 释放内存的最大行号,过了这个行号,直接删掉表格,往下继续生成,释放内存空间
int k = 0;
for (int i = 0, h = bodys.size(); i & i++) {
if (i != 0 && i % fregmentSize == fregmentSize - 1) {
System.out.println(&第[ & + (i + 1) + & ]行进行内存释放 & + ((k++) + 1) + & th&);
document.add(datatable);
datatable.deleteBodyRows();
datatable.setSkipFirstHeader(true);
//.... 表格处理
经过我的调试,发现一个问题:当你把需要清理的行数设置的越低,比如设置为100行,下面就会出现一些不爽的地方,如果改为1000以上,就没问题的,就是当你的前一页最下方那一行无法装下你的某行数据,需要换一页写入下一页,就是拆分行的话,你强制进行splitRow(false),会发生数据丢失。所以建议不要去 不让拆分表格 (或者你可以调大一些到1000行再去清理表格,别100行就清理,还不够内存累的)。比如下面这样是我推荐的方法,就让他在上一页一些,下一页一些呗,而且这种极限的情况很少发生,比如如下的demo,那就是我在100个线程并发访问生成5800行*33列的情况下搞的一个比较另类的pdf,前一页留一点,后一页留一点使得
打印的时候更加美观,何必非要前一页留那么多空白:
1.清理缓存并换页,第200行数据跑到了下一页,199行之后留了空白出来。(此种不推荐)
清理缓存不换页(推荐此种)事实证明,当你把代码中的fregmentSize的值上升到1000行一清理,就不会出现换页的问题。大家量力而行把。
落雨(感谢
给的很好的思路!!先添加了再删掉再添加。good)
日 10:04:12
已发表评论数()
&&登&&&陆&&
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见

我要回帖

更多关于 获取激活数据失败 的文章

 

随机推荐