Ext.onReady(function() {
//grid中的复选框
var sm = new Ext.grid.CheckboxSelectionModel();
//数据存储器
var ds = new Ext.data.Store({
proxy : new Ext.data.HttpProxy({
url : "../zdbnr.action?method=page",
method : "post"
}),
reader : new Ext.data.JsonReader({ //读取json数据
root : "newsList",
totalProperty : 'totalProperty' //总记录数
}, [{
name : "id"
}, {
name : "dataParamId"
}, {
name : "code"
}, {
name : "content"
}, {
name : "parentCode"
}])
});
//创建列
var cm = new Ext.grid.ColumnModel([
sm, //复选框
{
header : "编号",
dataIndex : "id",
sortable : true
}, {
header : "字典表编号",
dataIndex : "dataParamId",
width : 100
}, {
header : "代码",
dataIndex : "code",
width : 110
}, {
header : "内容",
dataIndex : "content",
width : 150
}, {
header : "父代码",
dataIndex : "parentCode",
width : 110
}]);
cm.defaultSortable = true;// 默认可排序
//grid中的工具条
var toolbar = new Ext.Toolbar([{
text : '添加参数',
icon : 'icons/add.gif',
handler : function(){
Ext.Msg.alert("提示","添加");
}
},{
text : '修改参数',
icon : 'icons/edit.gif',
handler : function(){
Ext.Msg.alert("提示","修改");
}
}, {
text : '删除参数',
icon : 'icons/delete.gif',
handler : function(){
//获取选中的对象
var list = grid.getSelectionModel().getSelections();
var str='';
if(list.length>0){
for(var i=0; i<list.length; i++){
str = str+list[i].get('code')+',';
}
}
Ext.Msg.alert("提示","删除"+str);
var idList = [];
for(var i=0; i<list.length; i++){
idList.push(list[i].get('id'));
}
for(var i=0; i < idList.length; i++){
var index = ds.find('id',idList[i]);
if(index != -1){
var rec = ds.getAt(index);
ds.remove(rec); // 移除
}
}
}
}, {
text : '重新加载',
icon : 'icons/plugin.gif',
handler : function(){
ds.reload();
}
}]);
//创建Grid
var grid = new Ext.grid.GridPanel({
el : "grid",
ds : ds,
title : "代码列表",
width : 600,
height : Ext.get("content").getHeight()/2+20,
cm : cm,
loadMask : {
msg : '正在加载数据,请稍侯……'
},
sm : sm,
tbar : toolbar,
// 下边
bbar : new Ext.PagingToolbar({
pageSize : 10,
store : ds,
displayInfo : true,
displayMsg : ' 显示第 {0} 条到 {1} 条记录,一共 {2} 条',
emptyMsg : ' 没有记录'
})
});
grid.render(); //组件渲染之后触发
ds.load({params : {start : 0,limit : 10}}); //加载数据
//双击事件
grid.addListener("rowdblclick",function(grid, rowIndex, columnIndex, e){
var dataObj = grid.getStore().getAt(rowIndex); //说去选中的行的数据对象
var id = dataObj.get("id");
var content = dataObj.get("content");
Ext.Msg.alert("提示",id+content);
});
//单击事件
/*
grid.addListener("click",function(){
Ext.Msg.alert("提示","单击事件");
});
*/
/*
* 如果要动态加载grid数据则,在方法内加入 ds:数据存储器,propertyId为要传的参数
* ds.load({params:{start:0,limit:10,propertyId:propertyId}});
*
* */
});
<html>
<head>
<title>form.html</title>
<script type="text/javascript" src="../extjs3/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../extjs3/ext-all-debug.js"></script>
<link rel="stylesheet" type="text/css"
href="../extjs3/resources/css/ext-all.css" />
<script type="text/javascript" src="js/form.js"></script>
</head>
<body>
<div id="content" style="width: 100%; height: 100%">
<div id="grid"></div>
</div>
</body>
</html>
/**
* 分页读取Grid内容
* @param request
* @param response
* @return
*/
@RequestMapping(params = "method=page")
public ModelAndView page(HttpServletRequest request,
HttpServletResponse response) {
int start;
try {
start = Integer.parseInt(request.getParameter("start"));
} catch (NumberFormatException e1) {
start = 0;
}
int limit;
try {
limit = Integer.parseInt(request.getParameter("limit"));
} catch (NumberFormatException e1) {
limit = 10;
}
SysDataParamContent nr = new SysDataParamContent();
nr.setDataParamId(10200);
List<SysDataParamContent> list = dataZxZdbnrService.findZdbnrByPage(nr,
start,limit);
int totalProperty = dataZxZdbnrService.findByCont(10200);
JSONArray jsonArray = new JSONArray();
Iterator ite = list.iterator();
while (ite.hasNext()) {
SysDataParamContent s = (SysDataParamContent) ite.next();
Map map = new HashMap();
map.put("id", s.getId());
map.put("dataParamId", s.getDataParamId());
map.put("code", s.getCode());
map.put("content", s.getContent());
map.put("parentCode", s.getParentCode());
map.put("levels",s.getLevels());
jsonArray.add(map);
}
String jsonStr = jsonArray.toString();
String jsonString = "{start:" + start + ",limit:" + limit
+ ",totalProperty:" + totalProperty + ",newsList:" + jsonStr
+ "}";
response.setContentType("text/html;charset=utf-8");
try {
response.getWriter().write(jsonString);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
1.为表格增加链接
有时我们需要为表格中的某一列添加一个链接。可以利用renderer配置属性为该列添加html
如下:{id:'3',header:'名称',dataIndex:'name',renderer:DomUrl},
定义DomUrl方法
function DomUrl(value){
return "<a href=>"+value+"</a>";
}
如果表格内的数据是一个链接如:www.google.cn 这样写法自然没有问题,
但是大多数时候我们在表格中不会直接写一个链接,
如果又需要根据单元格内容动态为链接添加几个参数。那这种写法就几乎没有什么用了。
因为这个属性是在表格初始化的时候定义好的,
而且表格初始化之后这个属性无法改变,也就是只读属性。
处理方法如下:
定义一个全局变量,初始值为0;
DomUrl函数如下
function DomUrl(value){
var row = grid.getSelectionModel().selectRow(startrow);//选中当前行
var rownum = grid.getSelectionModel().getSelected();//获取当前行
startrow ++;
var strurl = "abc.jsp?id=" + rownum.get('id');//获取当前选中行的值,并组织链接字符串
return "<a href='"+strurl+"'>"+value+"</a>";
}
切不要忘记在下次提交的时候将startrow赋值为0。
2.在grid怎么获取到所有的数据和列名!(列是动态的)!
在grid前没有checkbox的
var rowIndex = grid.getStore().getCount();//grid的行数
var colIndex = grid.getColumnModel().getColumnCount(); //grid的列数
这里面只知道是多少列和多少行,但得不到里面的数据
尝试:
var rowIndex = grid.getStore().getCount();//grid的行数
var colIndex = grid.getColumnModel().getColumnCount();
//grid的列数
alert(colIndex);
for(var i = 0; i< rowIndex ; i++){
record = grid.getStore().getAt(i);
var colname = grid.getColumnModel().getDataIndex(i); //获取列名
// var celldata = grid.getStore().getAt(cell[0]).get(colname);
//获取数据
Ext.MessageBox.alert("test",colname);
for (var j = 0; j < colIndex; colIndex++) {
Ext.MessageBox.alert("test",grid.getColumnModel().getDataIndex(j));
}
}
分享到:
相关推荐
ExtJS 是一个强大的...以上就是 ExtJS 中 GridPanel 的一些核心属性和方法,它们共同构建了一个功能强大的数据展示和交互界面。在实际开发中,可以根据需求灵活配置和使用这些组件,以实现各种复杂的数据管理功能。
ExtJS中的GridPanel是用于展示数据的组件,它是一个强大的数据网格,提供了丰富的功能和定制选项。以下是对GridPanel的一些主要属性和方法的详细说明: **属性总结:** 1. **store**: 这个属性定义了GridPanel所...
在GridPanel中添加“合计”行,主要涉及到View的自定义和数据处理。 1. **创建自定义View**: - 首先,我们需要创建一个继承自EXTJS的`Ext.grid.GridView`的自定义View类。这个类将覆盖默认的渲染逻辑,以便在表格...
ExtJS的GridPanel导出excel文件,方便快捷易懂!
GroupingView插件负责对GridPanel中的数据进行分组,并提供相应的用户界面元素以便用户可以通过组名展开或折叠数据。组名排序则涉及到Store中数据的排序规则,可以通过自定义GroupingStore来实现。 在示例中,定义...
EXTJS的GridPanel是其组件库中的核心组件之一,用于展示数据网格,广泛应用于Web应用的数据展示。在EXTJS中,ColumnModel是用来定义GridPanel列结构和行为的关键部分。这篇博客"EXTJS_GridPanel_ColumnModel_列的...