本代码可重用,在工作中我经常使用。
//定义grid的复选框
var sm = new Ext.grid.CheckboxSelectionModel();
//这里可以根据条件设置是否可选,当然不需要可以不用监听此事件
sm.on('beforerowselect',function(SelectionModel, rowIndex, keepExisting,record){
if(condition){
return true;
}else{
return false;
}
});
//定义json列
var jsonFields = [{name:'field1'},{name:'field2'}];
//定义gridColumn
var gridColumn =
[
sm,
{header:'列1',width:148,sortable:false,dataIndex:'field1'},
{header:'列2',width:148,sortable:false,dataIndex:'field2'}
];
/**
*定义动态获取grid方法
*fields 数据列
*column grid列
*title grid标题名
*result 传入的json数据,这个需要自己定义,或从后台返回,可以传入空数据{data:[]}
*root 数据key
*sm CheckboxSelectionModel对象
*form 表单对象,一般的数据操作都会跟表单关联,没有则可为null
*gridHeight 定义grid的高度
**/
var getGridPanel = function(fields,column,title,result,root,sm,form,gridHeight){
var store = new Ext.data.JsonStore({
fields:fields,
data:result,
root:root,
autoLoad:false
});
var cm = new Ext.grid.ColumnModel(column);
var gridPanel = new Ext.grid.GridPanel({
form:form,
header:false,
importData:result,
tbar:[
{
text:'全屏查看',
iconCls:'preview',
id:'screen',
handler:function(){
screenView(grid);
}
},{
text:'删除',
iconCls:'item-delete',
handler:function(){
var records = gridPanel.getSelectionModel().getSelections();
if(0 == records.length){
Ext.MessageBox.show({
title : '提示',
msg : '请选择要删除的数据',
buttons : Ext.MessageBox.OK,
icon : Ext.MessageBox.INFO
});
}else{
Ext.MessageBox.confirm('确认', '是否确定删除选重的信息?', function(btns) {
if (btns == 'yes') {
gridPanel.getStore().remove(records);
//updateUserInfo(form); //我这里是同步更新表单数据
}
});
}
}
},{
text:'审核通过',
iconCls:'setIsTop',
handler:function(){
var records = gridPanel.getSelectionModel().getSelections();
if(0 == records.length){
Ext.MessageBox.show({
title : '提示',
msg : '请选择要操作的数据',
buttons : Ext.MessageBox.OK,
icon : Ext.MessageBox.INFO
});
}else{
Ext.MessageBox.confirm('确认', '是否要接受选中学员的报名申请?', function(btns) {
if (btns == 'yes') {
for(var i=0;i<records.length;i++){
records[i].data['APPLY_STATUS'] = '2'; //设置某一列的状态值
}
updateUserInfo(form); //同步更新表单数据
var data = form.find('name','QP_USER_APPLYS.USER_INFO')[0].getValue();
gridPanel.getStore().loadData(Ext.decode(data)); //重新加载grid的数据
}
});
}
}
},{
text:'审核不通过',
iconCls:'setIsTopDown',
handler:function(){
var records = gridPanel.getSelectionModel().getSelections();
if(0 == records.length){
Ext.MessageBox.show({
title : '提示',
msg : '请选择要操作的数据',
buttons : Ext.MessageBox.OK,
icon : Ext.MessageBox.INFO
});
}else{
Ext.MessageBox.confirm('确认', '是否要取消选中学员的申请?', function(btns) {
if (btns == 'yes') {
for(var i=0;i<records.length;i++){
records[i].data['APPLY_STATUS'] = '3';
}
updateUserInfo(form);
var data = form.find('name','QP_USER_APPLYS.USER_INFO')[0].getValue();
gridPanel.getStore().loadData(Ext.decode(data));
}
});
}
}
}
],
id:'applyInfo',
//autoExpandColumn:'ID_CARD',
title:title,
forceFit:true,
height:gridHeight,
autoScroll:true,
store : store,
collapsible:false,
enableHdMenu : false,
cm : cm,
sm : sm,
stripeRows : false,
frame : false,
region : 'center',
viewConfig:{
//根据某一行的列值设置行的颜色
getRowClass : function(record,rowIndex,rowParams,store){
if(record.data.APPLY_STATUS == '3'){
return "x-grid-record-red";
}
if(record.data.APPLY_STATUS == '2'){
return "x-grid-record-green";
}
}
}
});
return gridPanel;
}
//更新用户数据信息
function updateUserInfo(form){
var result = [];
var st = grid.getStore();
st.each(function(r){
result.push(r.data);
});
var del_data = {"data":result};
//删除数据后更新用户信息数据
form.find('name','QP_USER_APPLYS.USER_INFO')[0].setValue(Ext.encode(del_data).replace(/\\/g,''));
}
//定义动态添加样式函数
var addStyle = function(rules) {
var styleElement = document.createElement('style');
styleElement.type = 'text/css';
if ( Ext.isIE ) { // 判断IE浏览器
styleElement.styleSheet.cssText = rules;
}
else {
var frag = document.createDocumentFragment();
frag.appendChild(document.createTextNode(rules));
styleElement.appendChild(frag);
}
document.getElementsByTagName('head')[0].appendChild(styleElement);
};
//动态添加样式,这里我主要是设置grid列表的行颜色用的
addStyle('.x-grid-record-red table{background: #E6D1E3;}');
addStyle('.x-grid-record-green table{background: #92FCCC;}');
以上是全部的代码,如有不明白的,可以留言我们一起讨论,或是有写的不足的还请大家给出意见。
相关推荐
我们首先从标题"ExtJs动态grid的生成"开始,了解动态生成Grid的基本概念和实现方法。 动态生成Grid意味着在运行时根据需求创建和更新Grid组件,而不是在应用初始化时静态定义。这种灵活性允许开发者更好地响应数据...
总的来说,Folio项目展示了React和CSS Grid在构建动态表单方面的强大潜力。React提供了组件化的开发模式和高效的UI更新,而CSS Grid则为表单布局提供了灵活的工具。这样的组合对于现代Web应用开发者来说,无疑是一个...
EXTJS的动态GRID特性极大地提高了开发效率和用户体验,使得开发者可以构建高度定制化和响应式的数据展示应用。在实际项目中,配合EXTJS的其他组件和功能,如Toolbars、Charts、Windows等,可以构建出功能丰富的Web...
这个例子程序源码主要展示了如何将两者结合,动态生成Grid列表。 在ASP.NET中,开发者通常使用C#或VB.NET作为后端编程语言,通过ASP.NET MVC或Web Forms模式来处理HTTP请求并返回HTML响应。EXTJS则负责在客户端渲染...
1. **动态修改和添加功能**:Grid++Report的独特之处在于其支持报表的动态修改和添加。这意味着开发者可以在程序运行过程中,根据用户需求或业务逻辑,实时调整报表结构,如添加新的数据列、修改字段显示方式、调整...
本教程将详细介绍如何在不使用属性绑定的情况下,手动动态地向`PropertyGrid`添加数据行并进行显示。 首先,理解`PropertyGrid`的基本工作原理至关重要。`PropertyGrid`是.NET Framework中的一个控件,它通过反射...
本资源"ng-grid实现动态列表.rar"包含ng-Grid动态列的实现,以及所需的库文件和示例效果。 动态列表是Web应用中常见的需求,特别是在数据管理界面,用户可能希望根据不同的场景显示不同的列。ng-Grid允许我们在运行...
在IT领域,Kendo UI Grid是一款非常流行的JavaScript数据可视化组件,用于构建强大的、响应式的网格视图。在处理数据展示时,我们常常需要对不同列的数据进行格式化,以满足特定的显示需求。本篇文章将深入探讨如何...
jQuery Grid支持动态增加行,这在处理动态数据或者需要用户添加新记录的场景中非常有用。通过调用Grid的API,可以向表格末尾添加新的行数据。例如,使用`addRowData`函数,传入新的数据对象和行ID,就能实现在表格中...
Sigma Grid 是构建在jQuery之上的,利用其强大的DOM操作和事件处理能力,为开发者提供了一种快速构建动态表格的方法。 2. **Sigma Grid 功能**: - **数据绑定**:能够绑定到不同的数据源,如JSON、XML或API。 - ...
利用构建规则格网(grid)进行体积计算:1.读取.txt数据文件。 2.正确求出导入数据散点集的凸包点。自定义网格的大小,在网格中绘制出凸包图形,并可保存为.dxf文件。 3.可以实现凸包图片在程序窗口的基本操作。 4....
总的来说,`Grid`嵌套`Grid`是`FineUI`框架中的一种强大布局策略,它允许开发者构建出层次分明、易于操作的用户界面。熟练掌握这一技术,将有助于提升前端开发效率和用户体验。在实践中不断探索和优化,你将能够创造...
在这个"extjs动态表格实例"中,我们将探讨如何使用ExtJS封装Grid并从Struts2框架的后台获取数据。 首先,让我们了解ExtJS中的Grid组件。Grid是ExtJS的一个关键组件,它用于展示结构化数据,并支持多种操作,如排序...
综上所述,这个项目旨在通过MFC和C++,利用grid控件创建一个类似于Outlook和Excel的用户界面,开发者可以参考提供的“mfc_grid”资源进行学习和实践,掌握如何在Windows应用中构建功能丰富的数据网格界面。
为此,GridStack提供了如动态加载、虚拟化等高级特性,以提高用户体验和性能。 总结起来,"girdDiv拖拽gridstack-4.2.5"是一个强大的前端工具,它结合了jQuery和JavaScript的优势,使得开发者能够轻松实现动态、...
在本文中,我们将深入探讨如何在Windows Presentation Foundation (WPF) 中使用C#语言实现Grid长度的动态改变,以及创建一个动画效果,让Grid能够自动收起。这是一项关键技能,对于开发美观、响应式的WPF用户界面至...
ExtJS是一款强大的JavaScript库,常用于构建富客户端应用程序,尤其是数据可视化和数据管理组件,如Grid。Grid是ExtJS中的核心组件,它提供了一种有效的方式来展示大量结构化数据。 首先,我们需要理解Grid的基本...
此外,GT-Grid还支持动态加载数据,以优化页面性能,特别是处理大数据时。 EXT-Grid则是EXT JS框架的一部分,EXT JS是一个完整的前端开发库,提供了一套完整的UI组件。EXT-Grid拥有丰富的内置特性,如拖放、行级...
Grid++Report是一款强大的报表工具,它允许开发者通过代码来动态地填充数据,从而创建出符合业务需求的复杂报表。这个"Grid++Report报表代码填充数据"主题主要涵盖以下几个方面的知识点: 1. **Grid++Report简介**...
Grid可以动态加载数据,支持排序、分页、筛选等多种功能。 2. **DragDrop API**:ExtJS内置了DragDrop API,允许开发者实现元素之间的拖放操作。你需要创建DragSource和DropTarget对象,分别对应拖动的源Grid和接收...