- 浏览: 83513 次
- 性别:
- 来自: 西安
最新评论
-
xieweiting:
把response返回属性改下, response.setCo ...
http://huoyunshen888.iteye.com/admin/blogs/new
CheckboxSelectionModel是grid的选择模式
删除行应该使用grid的store.remove方法。
BranchGrid=Ext.extend(Ext.grid.GridPanel,{ //从Ext.grid.GridPanel中继承
AddBranch:null, //声明Window组件
constructor:function(){//构件器
this.AddBranch=new AddBranchWindow();//创建 window组件
this.store=new Ext.data.Store({ //数据源
//// autoLoad:true,//为“true”自动加载数据
url:"GetBranchGrid.ashx",//从那里获得数据
reader:new Ext.data.JsonReader({
root:"data",
totalProperty:"count"
},[ //设置格式
{name:"ID",type:"int"},
{name:"brname",type:"string"}
])
});
BranchGrid.superclass.constructor.call(this,{ //对父类初始化
title:"部门信息",
renderTo:Ext.getBody(),
width:410,
height:350,
store:this.store, //设置数据源
selModel:new Ext.grid.RowSelectionModel({
singleSelect:true //定义选择模式”singleSelect“为ture时只能单选,默认为false
}),
columns:[new Ext.grid.RowNumberer(),{
header:"部门编号",
dataIndex:"ID",
align:"center"
},{
header:"部门名称",
dataIndex:"brname"
}],
loadMask:{msg:"数据加载中...."},
tbar:[{
text:"添加",
handler:this.showAdd,
scope:this
},"-",
{
text:"修改"
},"-",{
text:"删除",
handler:this.deleteBranch,
scope:this
}],
bbar:new Ext.PagingToolbar({
pageSize:3,
store:this.store, //设置数据源
displayInfo: true,
displayMsg:"当前 {0}-{1} 条记录 /共 {2} 条记录",
emptyMsg: "无显示数据"
})
});
this.getStore().load({params:{start:0,limit:3}});
this.AddBranch.on("OnButtonClick",this.OnButtonClick,this);//捕获AddBranchWindow中的OnButtonClick事件
},
showAdd:function(){
this.AddBranch.show();
},
OnButtonClick:function(win){ //OnButtonClick事件处理函数
var name=win.findByType("textfield")[0].getValue();
win.addFormPanel.getForm().submit({ //进行AJAX请求
waitMsg:"数据保存中...",
url:"AddBranch.ashx",
success:function(form,response){ //当success为true时执行的回调函数
var temp=Ext.util.JSON.decode(response.response.responseText);
Ext.Msg.alert("系统提示!",temp.msg);
if(temp.msg=="部门名称重复!")
{
return;
}
// var currentPageNum=this.getBottomToolbar().getPageData().activePage;//得到当前是第几页
// var limitNum=this.getBottomToolbar().getPageData().pages;//得到总页数
var start=this.getBottomToolbar().cursor; //得到当前记录指针
var limit=this.getBottomToolbar().pageSize; //得到每页要显示的记录数
this.getStore().load({params:{start:start,limit:limit}});
win.addFormPanel.getForm().reset();
},
scope:this
});
},
deleteBranch:function(){
var br=this.getSelectionModel().getSelected().data;
Ext.Ajax.request({
url:"updataBranch.ashx",
success:function(response){
Ext.Msg.alert("系统提示",Ext.util.JSON.decode(response.responseText).msg);
if(this.getStore().getCount()==1)//如果当前store的数据记录数等于1那么就从服务器端加载数据,否则从store中删除选定的Record
{
var cursor=this.getBottomToolbar().cursor;
var start=this.getBottomToolbar().cursor-this.getBottomToolbar().pageSize;
var pageSize=this.getBottomToolbar().pageSize;
this.getStore().load({params:{start:start,limit:pageSize}});
return;
}
this.getStore().remove(this.getSelectionModel().getSelected()) ;
// var cursor=this.getBottomToolbar().cursor;
// this.getStore().load({params:{start:cursor-1,limit:this.getBottomToolbar().pageSize}});
},
scope:this,
params:{branch:Ext.util.JSON.encode(br)}
});
}
});
/******************添加表单FormPanel控件*********************************************/
AddBranchFormPanel=Ext.extend(Ext.form.FormPanel,{
constructor:function(){
AddBranchFormPanel.superclass.constructor.call(this,{
defaultType:"textfield",
baseCls:"x-plain",//应用容器控件背景颜色
bodyStyle:"padding:5 0 0 5", //设置border样式
// frame:true,
labelWidth:55,
defaults:{anchor:"98%"}, //使用锚点布局设置缺省控件宽度
items:[{
fieldLabel:"部门名称",
allowBlank:false, //非空验证
blankText:"部门名称不能为空!",//为空时显示的提示信息
name:"brname" //name属性一定要与服务器端定义的Request["brname"]一致,不然服务器端得不到数据
}]
});
}
});
/******************添加表单Window控件**********************************************/
AddBranchWindow=Ext.extend(Ext.Window,{
addFormPanel:null,
constructor:function(){
this.addFormPanel=new AddBranchFormPanel();
AddBranchWindow.superclass.constructor.call(this,{
title:"添加部门信息",
width:300,
height:100,
renderTo:Ext.getBody(),
plain:true,
closeAction:"hide",//使关闭模式为隐藏(hide)
mode:true,
buttons:[{
text:"确 定",
handler:this.addBranchRecord,
scope:this
},{
text:"关 闭",
handler:this.close,
scope:this
}],
items:this.addFormPanel
});
this.addEvents("OnButtonClick");//添加自定义OnButtonClick事件,为外部组件提供接口
},
close:function(){
this.hide();
},
addBranchRecord:function(){
this.fireEvent("OnButtonClick",this); //在单击确定按钮时触发OnButtonClick事件
}
});
以下为服务器端代码:
首先为所有基类添加一个扩展方法(JSONHelper),以便处理JSON
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
/// <summary>
///JSONHelper 的摘要说明
/// </summary>
public static class JSONHelper
{
public static string ToJson(this object obj)
{
System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
return js.Serialize(obj);
}
}
HTTP处理程序 GetBranchGrid.ashx
using System;
using System.Web;
using System.Linq;
using System.Web.Script.Serialization;
public class GetBranchGrid : IHttpHandler {
private DataClassesDataContext dc = new DataClassesDataContext();
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
if (context.Request["start"] == null || context.Request["limit"] == null)
{
return;
}
int start=Convert.ToInt32(context.Request["start"].Trim());
int limit = Convert.ToInt32(context.Request["limit"].Trim());
var branch = from p in dc.Branch
select new { ID=p.ID , brname=p.brname };
int count = branch.Count();
string jsonbranch = branch.Skip(start).Take(limit).ToJson();
string jsonstr = "{" + "\"" + "count" + "\"" + ":" + count.ToString() + "," +
"\"" + "data" + "\"" + ":" + jsonbranch + "}";
context.Response.Write(jsonstr);
}
public bool IsReusable {
get {
return false;
}
}
}
AddBranch.ashx
using System;
using System.Web;
using System.Linq;
public class AddBranch : IHttpHandler {
public void ProcessRequest (HttpContext context) {
DataClassesDataContext dc = new DataClassesDataContext();
context.Response.ContentType = "text/plain";
if (context.Request["brname"] == null)
{
return;
}
string brname = context.Request["brname"].Trim();
int count = dc.Branch.Count(p=>p.brname==brname);
if (count != 1)
{
Branch br = new Branch();
br.brname = brname;
dc.Branch.InsertOnSubmit(br);
dc.SubmitChanges();
}
else
{
context.Response.Write("{success:true,msg:" + "\"" + "部门名称重复!" + "\"" + "}");
return;
}
context.Response.Write("{success:true,msg:" + "\"" + "添加成功!" + "\"" + "}");
}
public bool IsReusable {
get {
return false;
}
}
}
UpdataBranch.ashx
using System;
using System.Web;
using System.Linq;
public class UpdataBranch : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
DataClassesDataContext dc = new DataClassesDataContext();
System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
Branch temp= js.Deserialize<Branch>( context.Request["branch"].ToString());
Branch br = dc.Branch.Single(p=> p==temp);
dc.Branch.DeleteOnSubmit(br);
dc.SubmitChanges();
context.Response.Write("{success:true,msg:"+"\""+"删除成功!"+"\""+ "}");
}
public bool IsReusable {
get {
return false;
}
}
}
删除行应该使用grid的store.remove方法。
BranchGrid=Ext.extend(Ext.grid.GridPanel,{ //从Ext.grid.GridPanel中继承
AddBranch:null, //声明Window组件
constructor:function(){//构件器
this.AddBranch=new AddBranchWindow();//创建 window组件
this.store=new Ext.data.Store({ //数据源
//// autoLoad:true,//为“true”自动加载数据
url:"GetBranchGrid.ashx",//从那里获得数据
reader:new Ext.data.JsonReader({
root:"data",
totalProperty:"count"
},[ //设置格式
{name:"ID",type:"int"},
{name:"brname",type:"string"}
])
});
BranchGrid.superclass.constructor.call(this,{ //对父类初始化
title:"部门信息",
renderTo:Ext.getBody(),
width:410,
height:350,
store:this.store, //设置数据源
selModel:new Ext.grid.RowSelectionModel({
singleSelect:true //定义选择模式”singleSelect“为ture时只能单选,默认为false
}),
columns:[new Ext.grid.RowNumberer(),{
header:"部门编号",
dataIndex:"ID",
align:"center"
},{
header:"部门名称",
dataIndex:"brname"
}],
loadMask:{msg:"数据加载中...."},
tbar:[{
text:"添加",
handler:this.showAdd,
scope:this
},"-",
{
text:"修改"
},"-",{
text:"删除",
handler:this.deleteBranch,
scope:this
}],
bbar:new Ext.PagingToolbar({
pageSize:3,
store:this.store, //设置数据源
displayInfo: true,
displayMsg:"当前 {0}-{1} 条记录 /共 {2} 条记录",
emptyMsg: "无显示数据"
})
});
this.getStore().load({params:{start:0,limit:3}});
this.AddBranch.on("OnButtonClick",this.OnButtonClick,this);//捕获AddBranchWindow中的OnButtonClick事件
},
showAdd:function(){
this.AddBranch.show();
},
OnButtonClick:function(win){ //OnButtonClick事件处理函数
var name=win.findByType("textfield")[0].getValue();
win.addFormPanel.getForm().submit({ //进行AJAX请求
waitMsg:"数据保存中...",
url:"AddBranch.ashx",
success:function(form,response){ //当success为true时执行的回调函数
var temp=Ext.util.JSON.decode(response.response.responseText);
Ext.Msg.alert("系统提示!",temp.msg);
if(temp.msg=="部门名称重复!")
{
return;
}
// var currentPageNum=this.getBottomToolbar().getPageData().activePage;//得到当前是第几页
// var limitNum=this.getBottomToolbar().getPageData().pages;//得到总页数
var start=this.getBottomToolbar().cursor; //得到当前记录指针
var limit=this.getBottomToolbar().pageSize; //得到每页要显示的记录数
this.getStore().load({params:{start:start,limit:limit}});
win.addFormPanel.getForm().reset();
},
scope:this
});
},
deleteBranch:function(){
var br=this.getSelectionModel().getSelected().data;
Ext.Ajax.request({
url:"updataBranch.ashx",
success:function(response){
Ext.Msg.alert("系统提示",Ext.util.JSON.decode(response.responseText).msg);
if(this.getStore().getCount()==1)//如果当前store的数据记录数等于1那么就从服务器端加载数据,否则从store中删除选定的Record
{
var cursor=this.getBottomToolbar().cursor;
var start=this.getBottomToolbar().cursor-this.getBottomToolbar().pageSize;
var pageSize=this.getBottomToolbar().pageSize;
this.getStore().load({params:{start:start,limit:pageSize}});
return;
}
this.getStore().remove(this.getSelectionModel().getSelected()) ;
// var cursor=this.getBottomToolbar().cursor;
// this.getStore().load({params:{start:cursor-1,limit:this.getBottomToolbar().pageSize}});
},
scope:this,
params:{branch:Ext.util.JSON.encode(br)}
});
}
});
/******************添加表单FormPanel控件*********************************************/
AddBranchFormPanel=Ext.extend(Ext.form.FormPanel,{
constructor:function(){
AddBranchFormPanel.superclass.constructor.call(this,{
defaultType:"textfield",
baseCls:"x-plain",//应用容器控件背景颜色
bodyStyle:"padding:5 0 0 5", //设置border样式
// frame:true,
labelWidth:55,
defaults:{anchor:"98%"}, //使用锚点布局设置缺省控件宽度
items:[{
fieldLabel:"部门名称",
allowBlank:false, //非空验证
blankText:"部门名称不能为空!",//为空时显示的提示信息
name:"brname" //name属性一定要与服务器端定义的Request["brname"]一致,不然服务器端得不到数据
}]
});
}
});
/******************添加表单Window控件**********************************************/
AddBranchWindow=Ext.extend(Ext.Window,{
addFormPanel:null,
constructor:function(){
this.addFormPanel=new AddBranchFormPanel();
AddBranchWindow.superclass.constructor.call(this,{
title:"添加部门信息",
width:300,
height:100,
renderTo:Ext.getBody(),
plain:true,
closeAction:"hide",//使关闭模式为隐藏(hide)
mode:true,
buttons:[{
text:"确 定",
handler:this.addBranchRecord,
scope:this
},{
text:"关 闭",
handler:this.close,
scope:this
}],
items:this.addFormPanel
});
this.addEvents("OnButtonClick");//添加自定义OnButtonClick事件,为外部组件提供接口
},
close:function(){
this.hide();
},
addBranchRecord:function(){
this.fireEvent("OnButtonClick",this); //在单击确定按钮时触发OnButtonClick事件
}
});
以下为服务器端代码:
首先为所有基类添加一个扩展方法(JSONHelper),以便处理JSON
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
/// <summary>
///JSONHelper 的摘要说明
/// </summary>
public static class JSONHelper
{
public static string ToJson(this object obj)
{
System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
return js.Serialize(obj);
}
}
HTTP处理程序 GetBranchGrid.ashx
using System;
using System.Web;
using System.Linq;
using System.Web.Script.Serialization;
public class GetBranchGrid : IHttpHandler {
private DataClassesDataContext dc = new DataClassesDataContext();
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
if (context.Request["start"] == null || context.Request["limit"] == null)
{
return;
}
int start=Convert.ToInt32(context.Request["start"].Trim());
int limit = Convert.ToInt32(context.Request["limit"].Trim());
var branch = from p in dc.Branch
select new { ID=p.ID , brname=p.brname };
int count = branch.Count();
string jsonbranch = branch.Skip(start).Take(limit).ToJson();
string jsonstr = "{" + "\"" + "count" + "\"" + ":" + count.ToString() + "," +
"\"" + "data" + "\"" + ":" + jsonbranch + "}";
context.Response.Write(jsonstr);
}
public bool IsReusable {
get {
return false;
}
}
}
AddBranch.ashx
using System;
using System.Web;
using System.Linq;
public class AddBranch : IHttpHandler {
public void ProcessRequest (HttpContext context) {
DataClassesDataContext dc = new DataClassesDataContext();
context.Response.ContentType = "text/plain";
if (context.Request["brname"] == null)
{
return;
}
string brname = context.Request["brname"].Trim();
int count = dc.Branch.Count(p=>p.brname==brname);
if (count != 1)
{
Branch br = new Branch();
br.brname = brname;
dc.Branch.InsertOnSubmit(br);
dc.SubmitChanges();
}
else
{
context.Response.Write("{success:true,msg:" + "\"" + "部门名称重复!" + "\"" + "}");
return;
}
context.Response.Write("{success:true,msg:" + "\"" + "添加成功!" + "\"" + "}");
}
public bool IsReusable {
get {
return false;
}
}
}
UpdataBranch.ashx
using System;
using System.Web;
using System.Linq;
public class UpdataBranch : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
DataClassesDataContext dc = new DataClassesDataContext();
System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
Branch temp= js.Deserialize<Branch>( context.Request["branch"].ToString());
Branch br = dc.Branch.Single(p=> p==temp);
dc.Branch.DeleteOnSubmit(br);
dc.SubmitChanges();
context.Response.Write("{success:true,msg:"+"\""+"删除成功!"+"\""+ "}");
}
public bool IsReusable {
get {
return false;
}
}
}
发表评论
-
Add a StatusBar to a window
2011-08-10 22:30 995<html> <head> <t ... -
ExtJs表格点击超链接获取行的值
2011-08-03 23:53 1658grid双击事件,并得到单 ... -
extjs
2011-07-31 10:42 740var record_start=0; columns:[n ... -
ExtJs分页精解(java应用)
2011-07-28 21:48 1101ExtJs的分页做的相当出色!在此,我们简单的分析一下它的分页 ... -
.“Extjs之进度条的控制”
2011-07-28 21:12 2940<%@ Page Language="C#&q ... -
ExtJs实现EditGrid中的增删改查操作(2)
2011-07-27 23:18 45292.本例是在ExtJs官方提供 ... -
extjs做的添加,删除给大家分享一下.加载数据的数据
2011-07-27 23:05 1465<!DOCTYPE html PUBLIC " ... -
extjs
2011-07-24 14:14 878我想改变默认extjs字体的大小,应该怎么做? AJAX读 ... -
http://huoyunshen888.iteye.com/admin/blogs/new
2011-07-24 13:23 887我用extjs+struts1.2做文件上传时,当文件上传成功 ... -
ext
2011-07-24 10:51 1156<%@ page language="java ... -
ext
2011-07-24 09:50 1118Ext.Ajax.request({ url:'get ... -
ExtJS 初步應用 ProgressBar
2011-07-06 22:51 1011<!DOCTYPE HTML PUBLIC " ... -
extjs combox
2011-07-06 22:24 1109var crdtypeStore_CX = new Ext.d ... -
extjs开发包
2011-07-05 21:24 716
相关推荐
在ExtJs中,GridPanel是用于展示数据的常用组件,它可以提供丰富的功能,如排序、分页、筛选等。在实际应用中,我们经常需要监听用户的交互行为,比如双击行进行进一步的操作。本篇文章将深入讲解如何在ExtJs ...
在给定的"ExtJs GridPanel延时加载.rar"文件中,主要涉及的核心概念是ExtJs中的GridPanel组件以及延时加载技术。GridPanel是ExtJs中一个非常重要的组件,它用于展示表格数据,而延时加载则是一种优化大量数据处理的...
### ExtJS GridPanel 使用详解及示例 #### 一、引言 在现代Web应用程序开发中,特别是基于ExtJS框架的应用程序中,`GridPanel`是处理表格数据展示的一个非常重要的组件。它不仅可以帮助开发者轻松地展示数据,还...
GridPanel不仅能够处理基本的表格操作,如单选、多选、排序、改变列宽等,还支持更高级的功能,如单元格自定义渲染、本地和远程分页、行编辑、行添加和删除等。 首先,让我们深入了解EXTJS GridPanel的构建过程: ...
以下是对EXTJS分页后台处理的详细说明: 首先,`Store`对象是EXTJS中用于存储数据的核心组件。在你的代码中,`Store`被创建并配置了`baseParams`、`JsonReader`和`HttpProxy`。 1. `baseParams`: 这个属性用于传递...
PagingToolbar是ExtJS中的分页工具栏,通常用于表格组件(GridPanel)的底部,提供页码导航和信息显示。在树分页组件中,同样需要这样一个工具栏来控制分页操作。扩展PagingToolbar,我们需要将它的功能适配到树形...
此外,GridPanel还支持各种工具栏(toolbar)和分页条(paging toolbar),可以添加按钮、下拉框等元素,方便用户操作。例如,添加分页条的代码如下: ```javascript dockedItems: [{ dock: 'bottom', xtype: '...
`gridPanel`在诸如ExtJS、GWT或PrimeFaces等框架中常见,它们提供了丰富的功能来处理表格数据,包括排序、筛选、分页等。 首先,让我们了解`gridPanel`的基本结构。`gridPanel`由多个部分组成,如头部(header)、...
### 通过Servlet让Extjs GridPanel显示数据库数据 在现代Web开发中,将数据库中的数据动态展示在前端界面上是一项常见的需求。本文档主要介绍如何通过Servlet技术配合Extjs框架中的GridPanel组件来实现这一功能。 ...
ExtJS的PagingStore是其框架中用于实现前端分页功能的重要组件,主要适用于处理大量数据的场景,以提高网页性能并提供良好的用户体验。在ExtJS 3.x版本中,PagingStore是与GridPanel结合使用,使得用户可以逐页加载...
在使用ExtJS开发Web应用程序时,经常会遇到在GridPanel中数据列过多,导致横向滚动条自动出现的问题。这个问题主要是由于GridPanel的宽度不足以容纳所有的列宽,因此浏览器会自动显示横向滚动条以便用户查看全部数据...
在ExtJS中,"分页树"是一种结合了树形数据结构和分页功能的组件,它允许用户以层级方式浏览大量数据,并通过分页来管理这些数据,提高用户体验。在"Extjs2分页树 带查询功能"这个主题中,我们将深入探讨如何在ExtJS ...
ExtJS表格面板(GridPanel)是Sencha Ext JS框架中的一个核心组件,它用于展示大量结构化数据。在本文中,我们将深入探讨如何创建并使用一个完整的ExtJS GridPanel实例,以及与其相关的源码和工具。 首先,让我们...
`bbar`属性将分页工具栏添加到GridPanel底部。 4. **数据请求与参数传递**: 当`Store`加载数据前,会触发`beforeload`事件。在这个事件处理器中,我们可以设置`baseParams`,向后台传递额外的参数,比如当前页码...
GridPanel则是ExtJS中的表格视图组件,它可以展示大量的数据,并提供排序、筛选、分页等功能。在集成TreePanel和GridPanel时,可能涉及到的概念有:将TreePanel的节点与GridPanel的数据关联,实现点击树节点时动态...
5. 渲染GridPanel:将GridPanel添加到容器中,完成渲染。 在实际应用中,GridPanel还可以与其他组件结合,比如使用Toolbar提供操作按钮,或者嵌入其他复杂的组件,如Charts,以实现数据分析和可视化。 除了...
6. **自定义分页栏**:如果需要自定义分页栏的样式或行为,可以创建一个Ext.toolbar.Paging实例,并添加到GridPanel的底部。通过监听`beforechange`或`changepage`事件,可以实现额外的功能,比如在切换页面前进行...
#### 一、EXTJS GridPanel分页概述 在EXTJS框架中,`GridPanel`组件是一种常用的数据展示工具,它能够以表格形式呈现数据集。而分页功能是`GridPanel`一个重要的特性,它能够帮助用户更有效地管理大量的数据记录,...
用户可以添加、编辑和删除 GridPanel 中的数据行。通过配置编辑器(editors)和工具栏(toolbar)可以实现这些操作。 7. **行选择模式**: GridPanel 支持多种行选择模式,如单选、多选和全选。配合 ...
非传统分页工具. 简单说明下: 显示第一页与最后一页. 显示当前页对称的前后几页(可以自定义显示多少页). 其它的页码省略. 点击省略号, 省略号隐藏, 显示一个与省略号相同宽度的页面跳转转入框. 整个设置还比较智能....