`
zyshaw
  • 浏览: 54060 次
  • 性别: Icon_minigender_1
  • 来自: 加興
文章分类
社区版块
存档分类
最新评论

ext gridpanel 增删改查例子

阅读更多
/******************部门信息表格控件*****************************************************/
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;
        }
    }

}
分享到:
评论

相关推荐

    Ext左树有表格 增删改查

    在"Ext左树有表格 增删改查"这个主题中,我们主要关注的是ExtJS如何实现左侧树形结构与右侧表格的交互,以及在这样的布局中进行数据的增、删、改、查操作。 首先,ExtJS中的树形组件(TreePanel)可以用来展示层级...

    ext.net与ADO.NET增删改查操作

    "admin"可能是应用程序的管理界面目录,包含用于执行增删改查操作的EXT.NET控件,如GridPanel、FormPanel等。这些控件可以绑定到数据源,并通过EXT.NET的事件处理机制(如button的click事件)调用后台的C#方法执行...

    ExtJS增删改查

    在"ExtJS增删改查"这个主题中,我们将深入探讨如何利用ExtJS进行CRUD(创建Create、读取Read、更新Update和删除Delete)操作,这是任何数据库驱动的应用程序中的基本功能。 首先,创建(Create)操作通常涉及创建新...

    ext精典例子(增删改查)

    标题“EXT经典例子(增删改查)”暗示了我们将探讨EXT在实现CRUD操作中的应用。CRUD代表创建(Create)、读取(Read)、更新(Update)和删除(Delete),这是任何数据库驱动应用的基础操作。EXT提供了直观且易于...

    Nhibernate+extjs的增删改查的例子

    在这个例子中,Nhibernate被集成到ASP.NET MVC架构中,提供了数据的增删改查(CRUD)功能。ExtJS则是一个用于构建富客户端Web应用程序的JavaScript库,它的组件化特性使得创建复杂的用户界面变得轻松。 **...

    Ext范例,增删改查,树,界面设计

    这个压缩包文件包含的示例和资源主要展示了如何利用ExtJS实现数据操作(增删改查)以及树形视图(TreePanel)的界面设计。 首先,"增删改查"(CRUD,Create、Read、Update、Delete)是任何数据驱动应用的基础功能。...

    ext增删改查

    本文将深入探讨如何使用Ext JS来实现基本的数据增删改查(CRUD)操作,特别关注代码示例中的Store和GridPanel组件。 #### Store组件 在Ext JS中,`Store`是负责从服务器获取数据并存储这些数据的核心组件。通过...

    Ext增删改查和excel导出

    在"Ext增删改查和excel导出"这个主题中,我们将探讨如何在ExtJS应用中实现数据的CRUD操作(创建、读取、更新、删除)以及如何将数据导出为Excel格式。 1. 创建(Create) 在ExtJS中,可以使用GridPanel或FormPanel...

    Extjs+ssh 增删改查

    在“增删改查”场景下,我们通常会用到GridPanel(表格)和FormPanel(表单)。 - **GridPanel**: 用于展示数据集合,支持分页、排序、过滤等功能。在增删改查中,GridPanel可以显示数据库中的数据,用户可以通过它...

    Ext GridPanel 中实现加链接操作

    ### Ext GridPanel 中实现加链接操作 在前端开发领域中,Ext JS 是一款非常流行的 JavaScript 框架,用于构建企业级的 Web 应用程序。Ext GridPanel 是该框架中的一个重要组件,常用于展示表格数据。本文将详细介绍...

    ExtJS4+Struts2.1的Grid 增删改查

    本文将深入探讨如何使用这两种技术实现Grid的增删改查功能,帮助新手理解ExtJS4与Struts2.1的交互机制。 首先,我们来看ExtJS4中的Grid组件。Grid是ExtJS中用于展示和管理数据的一种视图,它提供了一种灵活且可定制...

    treePanel与gridPanel技术实现页面的增删改查

    在本文中,我们将深入探讨`treePanel`和`gridPanel`技术在页面上实现数据的增删改查功能。这两个组件是Ext JS框架中的核心组件,广泛用于构建数据驱动的用户界面。`treePanel`主要用于展示层级结构的数据,如文件...

    Extjs实现了增删改查(增加了动态树)上次升级版

    这个"Extjs实现了增删改查(增加了动态树)上次升级版"项目,显然是利用ExtJS的功能来实现了一个完整的数据操作功能,包括添加、删除、修改和查询,同时还集成了一项新的特性——动态树视图。 动态树视图是ExtJS中...

    EXT GridPanel获取某一单元格的值

    在提供的代码段中,我们看到一个监听`cellclick`事件的例子,这是EXT GridPanel中用于捕获用户点击单元格时的事件。下面是这段代码的详细解释: 1. `cellclick`: 这是EXT GridPanel的事件名,当用户点击表格内的...

    springMVC+Extjs4.2实现用户增删改查功能

    6. **安全性考虑**:比如使用Spring Security进行权限控制,确保只有授权用户才能执行增删改查操作。 这个项目是一个很好的学习资源,展示了如何结合现代前端技术和后端框架实现一个完整的业务功能。通过研究和实践...

    ExtJs实现EditGrid中的增删改查操作(2)

    了解以上概念后,你可以参考提供的文档“ext增删改查.doc”来获取更具体的实现步骤和代码示例。该文档可能会涵盖如何创建Store、配置GridPanel、使用CellEditing插件以及处理CRUD操作的服务器端交互等详细信息。 ...

    Ext 操作数据库,对数据的增删改查,包括数据库,Ajax请求和store请求的设置

    首先,让我们深入了解一下Ext中的"增删改查"(CRUD)操作。CRUD代表创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete),这是任何数据库应用的基础。在Ext中,我们通常会使用Store组件来处理这些操作。Store...

    SSH+ExtJs实现表单的增删改查CRUD

    总结来说,SSH+ExtJS实现的CRUD系统结合了Java后端的高效处理能力和JavaScript前端的用户体验优化,通过JSON进行数据交换,实现了对数据库中如“Student”这样的记录进行增、删、改、查的功能。这样的系统设计灵活且...

    extjs常用增删改查操作

    ### ExtJS 增删改查操作详解 #### 一、引言 ExtJS 是一款强大的 JavaScript 框架,用于构建复杂的前端应用程序。通过利用其丰富的组件库和灵活的数据处理能力,开发者能够轻松实现数据的增删改查(CRUD)操作。本文...

Global site tag (gtag.js) - Google Analytics