////////////////////////////
//声明grid
var Dat;
//表字段:ID CName EName Sex Address Mobile
//声明全局变量session_Column作为当前的列集,默认是2列
var session_column = "pno,pname,pnum,";
//封装grid
function DataGrid(){
//默认2列
this.fields = '{name:"pno"},{name:"pname"},{name:"pnum"}';
this.columns = '{header:"组合",dataIndex:"pno",hidden:false,sortable:true},'
+'{header:"名称",dataIndex:"pname",sortable:true},'
+'{header:"市值",dataIndex:"pnum",sortable:true}';
//动态增加列
this.addField=function(name,caption)
{
if(this.fields.length > 0){
this.fields += ',';
}
if(this.columns.length > 0){
this.columns += ',';
}
this.fields += '{name:"' + name + '"}';
this.columns += '{header:"' + caption + '",dataIndex:"' + name + '",sortable:true}';
};
//动态删除列
this.removeField=function(name,caption)
{
if(this.fields.length > 0&&this.columns.length > 0)
{
var d_field = ',{name:"' + name + '"}';
var index = this.fields.indexOf(d_field);
if(index>=0)
{
this.fields = this.fields.replace(d_field,"");
}
var d_column = ',{header:"' + caption + '",dataIndex:"' + name + '",sortable:true}';
var index2 = this.columns.indexOf(d_column);
if(index2>=0)
{
this.columns = this.columns.replace(d_column,"");
}
}
};
//绑定存储器
this.ds = new Ext.data.Store
({ autoLoad :false,
proxy:new Ext.data.HttpProxy({url:"griddata.action"}),
reader:new Ext.data.JsonReader({totalProperty:"results",root:"items"}, Ext.data.Record.create(eval('(['+this.fields+'])')))
});
//清空字段,恢复初始值
this.clearFields= function(){
this.fields = '{name:"pno"},{name:"pname"},{name:"pnum"}';
this.columns = '{header:"组合",dataIndex:"pno",hidden:false,sortable:true},' +
'{header:"名称",dataIndex:"pname",sortable:true},'
+'{header:"市值",dataIndex:"pnum",sortable:true}';
};
//实现动态增加或者删除列
this.RefreshDataSource = function(u){//动态添加列
var cm1 = eval('([' + this.columns + '])');
//默认可以对字段排序
cm1.defaultSortable = true;
//重新绑定数据集
var newStore = new Ext.data.Store
({ autoLoad :false,
proxy:new Ext.data.HttpProxy({url: u}),
reader:new Ext.data.JsonReader({totalProperty:"results",root:"items",id :"id"},Ext.data.Record.create(eval('([' + this.fields + '])')))
});
//重新绑定grid
this.grid.reconfigure(newStore, new Ext.grid.ColumnModel(cm1));
//重新绑定分页工具栏
this.pagingBar.bind(newStore);
//重新加载数据集
newStore.load({params:{start:0,limit:10}});
}
this.ds.load();
this.pagingBar = new Ext.PagingToolbar
({
displayInfo:true,
emptyMsg:"没有数据显示",
displayMsg:"显示从{0}条数据到{1}条数据,共{2}条数据",
store:this.ds,
pageSize:10
});
this.grid = new Ext.grid.GridPanel
({
cm:new Ext.grid.ColumnModel(eval('([' + this.columns + '])')),
store:this.ds,
id:"pgrid",
title:"组合信息",
loadMask:true,
layout:"fit",
autoWidth:true,
stripeRows :true,
frame :false,
viewConfig : {
autoFill :true,
enableRowBody :true
},
// autoHeight:false,
height:440,
autoScroll:true,
bbar:this.pagingBar,
listeners:{
'cellclick':function(grid,rowIndex,columnIndex,e){
var record = grid.getStore().getAt(rowIndex);
Ext.getCmp('text1').setValue(rowIndex);
}
},
renderTo:grid1
});
}
//动态增加列
function AddColumn(columnName,caption){
if(session_column.indexOf(columnName)>0)
{
// Ext.Msg.alert("友好提示","["+caption+"]字段已经添加过了,不能够重复!当然你想重复,要改源代码哦!");
return;
}
session_column +=columnName;
Dat.addField(columnName,caption);
}
//刷新页面恢复初始加载状态
function Refresh(){
var url = "griddata.action";
Dat.clearFields();//清空字段,恢复初始值
session_column = "pno,pname,pnum,";
//Dat.RefreshDataSource(url);
}
Dat = new DataGrid();
/////调用发出请求
AddColumn("tmgamma","伽玛(T-M三因素)");
url = "griddata.action?type=4&begin="+begin+"&end="+end+"&pno="+pno;
Dat.RefreshDataSource(url);
</script>
分享到:
相关推荐
EXT动态列是一种在EXT JS框架下实现表格列动态生成的技术,它允许我们在运行时根据需求创建或修改表格列。EXT JS是一个强大的JavaScript库,专用于构建富客户端Web应用程序,其组件化的设计使得创建复杂的用户界面变...
Ext grid 动态添加字段、列扩展, 如何动态添加或者删除一个grid的列
在本教程中,我们将深入探讨如何通过EXT Grid的插件机制实现动态地在代码中添加或删除表格列,这正是“Ext grid AddRemovecolumn plugin”的核心功能。 首先,让我们理解EXT Grid的基本结构。EXT Grid由多个组件...
- **动态列**:EXT4.3的`Ext.grid.Panel`允许在运行时动态添加、删除和调整列宽。开发者可以通过`columns`配置项或者`addColumn`、`removeColumn`方法实现。 - **数据源绑定**:grid可以与各种数据源(如Store)...
当用户滚动时,BufferView会动态加载和卸载数据,使得大规模数据的展示变得流畅。 接下来,"多表头"是另一个增强表格功能的关键特性。在Ext Grid中,多表头允许用户创建复杂的表头结构,以更好地组织和呈现数据。...
本篇将详细介绍如何实现 `Ext Grid` 的列动态添加。 1. **创建 ColumnModel** `Ext.grid.ColumnModel` 是用于定义 `GridPanel` 列结构的类。在创建 `ColumnModel` 时,我们需要提供一个包含列信息的 JavaScript ...
6. **性能优化**:考虑到大量动态添加组件可能会影响性能,可以考虑使用延迟加载(Lazy Loading)或者虚拟滚动(Virtual Scrolling)技术,只在可视区域内渲染必要的行。 7. **用户交互**:为了提供良好的用户体验...
在本文中,我们将深入探讨如何在Ext2.0框架中实现Grid列的锁定功能,这是一种在数据展示时保持关键列固定不动,以便用户更轻松地浏览和操作表格数据的技术。Ext是一个强大的JavaScript库,用于构建复杂的Web应用程序...
Ext动态树是基于Ext JS库的一个组件,用于创建交互式的、可动态更新的树形结构。这个组件在Web应用程序中非常有用,特别是在需要展示层级数据或者进行导航菜单设计时。Ext中文API为开发者提供了详细的使用指南和参考...
在这个特定的场景中,我们关注的是"多表头"和"列锁定"功能,这两者都是Ext JS表格视图中的高级特性。 多表头(Multi-Level Headers)允许在表格中创建层次化的列标题,这在处理复杂数据时非常有用。通过多表头,...
"Ext3.4.0复杂(多行)表头+锁定多列例子"这个标题涉及到的是一个JavaScript库——Ext JS的一个高级功能应用。Ext JS是一个流行的前端框架,用于构建富互联网应用程序(RIA),它提供了一套完整的组件化开发工具,包括...
根据提供的文件信息,本文将详细解释如何在LigerGrid中实现动态改变加载字段列名的功能。这涉及到对LigerGrid的基础使用、参数设置以及通过JavaScript编程实现动态更改的方法。 ### LigerGrid概述 LigerGrid是一款...
5. 渲染Grid:将配置对象传递给`Ext.create`方法,生成Grid实例并添加到DOM中。 在压缩包中的文件“复杂表头+锁定列”可能包含了示例代码、HTML模板和必要的资源,供开发者参考和学习。为了进一步了解和实践这个...
在这个场景中,我们将深入探讨如何使用Ext.NET代码动态创建GridPanel,并在各种窗口中灵活展示。 1. **动态创建GridPanel**: 在Ext.NET中,动态创建GridPanel意味着在运行时根据需要生成组件。这通常涉及到在...
对ext Grid进行了封装,动态加载数据源,动态生成列
例如,如果新数据包含新的列,你可以在加载完成后动态添加这些列。 5. **自定义工具栏和功能** - Grid的顶部通常包含一个工具栏,可以动态添加按钮或其他UI元素,提供搜索、排序或过滤等功能。这些功能可以通过`...
通过阅读和分析博文链接(已提供但无法直接访问),开发者可以学习如何在实际项目中实现这个功能,例如,如何根据数据结构动态创建列,如何处理动态添加或删除列的情况,以及如何处理排序和过滤等交互功能。...
4. **动态从服务器获取数据**:在大型应用中,通常会采用动态加载数据的方式,这涉及到EXT Grid的分页功能。通过`Ext.grid.Panel`的`plugins`属性启用分页插件`Ext.grid.plugin.PagingToolbar`,并与`store`的`proxy...
在了解如何添加链接之前,我们首先需要理解 Ext GridPanel 的基本结构。Ext GridPanel 主要有以下几个组成部分: 1. **Store**:存储数据的模型。 2. **Column Model**:定义列的信息。 3. **View**:显示数据的...
还可以添加自定义的列渲染器来改变数据显示样式。 3. **行编辑**:EXT GRID支持行内编辑,用户可以直接在表格中修改数据,这需要结合EditorGridPanel和Form Field组件来实现。 4. **排序和过滤**:GRID可以实现列...