`
zrmcsd
  • 浏览: 47224 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

EXT AJAX XML 实践

阅读更多
    最近用EXT的AJAX实现页面的增删改,感觉还不错,速度还是可以的。
     关于AJAX的提交参数 params个人感觉不必参照例子组成xml或json,直接组成字符串传给后台即可  
/*
 * Ext JS Library 2.0 RC 1
 * zrmcsd@gmail.com
 * 
 */

Ext.onReady(function(){
    Ext.QuickTips.init();

    function formatDate(value){
        return value ? value.dateFormat('M d, Y') : '';
    };
    var fm = Ext.form;

    var checkColumn = new Ext.grid.CheckColumn({
       header: "有效",
       dataIndex: 'indoor',
       width: 55
    });

    var cm = new Ext.grid.ColumnModel([{
           id:'doc_code',
           header: "文档编号",
           dataIndex: 'doc_code',
           width: 220,
           hidden: true, //    隐藏列    
           editor: new fm.TextField({
               allowBlank: false
           })
        },{
           id:'name',
           header: "名称",
           dataIndex: 'name',
           width: 200,
           editor: new fm.TextField({
               allowBlank: false
           })
        },{
           header: "说明",
           dataIndex: 'label',
           width: 150,
           editor: new fm.TextField({
               allowBlank: false
           })
        },{
           header: "菜单",
           dataIndex: 'price',
           width: 120,
           editor: new fm.TextField({
               allowBlank: false
           })
        },{
           header: "有效",
           dataIndex: 'youx',
           width: 120,
           editor: new fm.TextField({
               allowBlank: false
           })
        }
    ]);

    // sortable
    cm.defaultSortable = true;

    var Plant = Ext.data.Record.create([
           {name: 'doc_code', type: 'string'},
           {name: 'name', type: 'string'},
           {name: 'botanical', type: 'string'},
           {name: 'label'},
           {name: 'price', type: 'string'},             
           {name: 'youx', type: 'string'}
      ]);

    // create the Data Store
    var store = new Ext.data.Store({
        // 载入自动生成的XML文件   xml文件格式 uft-8
        url: 'moudlexml.jsp',

        reader: new Ext.data.XmlReader({
               record: 'plant'
           }, Plant),

        sortInfo:{field:'name', direction:'ASC'}
    });

    // create the editor grid
    var grid = new Ext.grid.EditorGridPanel({
        store: store,
        cm: cm,
        renderTo: 'editor-grid',
        width:600,
        height:300,
        autoExpandColumn:'name',
        title:'模块管理',
        frame:true,
        plugins:checkColumn,
       //clicksToEdit:10,//设置点击几次才可编辑
        selModel: new Ext.grid.RowSelectionModel({singleSelect:false}),//设置单行选中模式, 否则将无法删除数据
        tbar: [{
            tooltip:'Add Plant',
            iconCls:'add',
            text: '添加行',
            handler : function(){
                var p = new Plant({
                    doc_code: '0',
                    name: '',
                    label:'',
                    price:'',
                    youx:'',
                    indoor: false
                });
                var n = grid.getStore().getCount();// 获得总行数 
                grid.stopEditing();
                store.insert(n, p);
                grid.startEditing(n, 0);
            }
        }, '-', {
            text:'删除行',
            tooltip:'remove ',
            iconCls:'remove',
            handler : function(){
              
                var rs1 = grid.getSelectionModel().getSelected();// 返回值为 Record 类型
                grid.stopEditing();
                if(rs1==undefined)
                {
                  return;//判断记录集是否为空,为空返回
                }
                
              Ext.MessageBox.confirm('确认删除', '你真的要删除所有用户信息吗?', 
                        function(btn) {
                            if(btn == 'yes') 
                            { 
                              // var rs1 = store.getAt(1);
                              store.remove(rs1);
                              
                            
                              grid.startEditing(0, 0); 
                              Ext.Msg.alert('友情提示','删除成功,很好很强大');
                            }
                            else
                            {
                              //Ext.Msg.alert('您成功修改了用户信息', "被修改 "+rs1.get("name") );// 取得用户名
                              Ext.Msg.alert('友情提示','很天真,怎么不删');
                            }
                        });
                        
             }
            
        },'-',{
            text:'保存',
            tooltip:'Save item',
            iconCls:'option'
        }]
    });

          // 单元格编辑后事件处理,暂不用
          grid.on("afteredit", afterEdit, grid);
        
          function afterEdit(e) {// 事件处理函数
              var record = e.record;// 被编辑的记录     
              Ext.Msg.wait("请等候", "修改中", "操作进行中..."); // 显示等待对话框
              // 更新界面, 来真正删除数据
              Ext.Msg.alert('您成功修改了用户信息', "被修改的用户是:" + e.record.get(e.field) + "\n 修改的字段是:" + e.field);
          };    
          

//*****************************编辑窗口*****************************************************************
    var simple = new Ext.FormPanel({
        renderTo:'form-grid',//inner到哪个容器中
        labelWidth: 75, // label settings here cascade unless overridden
        url:'baododododododododo',
        frame:true,
        title: '编辑器',
        bodyStyle:'padding:5px 5px 0',
        width: 350,
        defaults: {width: 230},
        defaultType: 'textfield',

        items: [{
                fieldLabel: '名称',
                name: 'name_e',
                allowBlank:false
            },{
                fieldLabel: '菜单',
                name: 'label_e',
                allowBlank:false
            },{
                fieldLabel: '说明',
                name: 'price_e',
                allowBlank:false

            }, {
                fieldLabel: '是否有效',
                name: 'youx_e'
            }
        ],
              
        buttons: [{
            text: '保存',
            handler : function(){
            
                    
            
        Ext.Ajax.request({
            url : 'addrow.jsp' , 
            params :'action=edit&name='+Ext.getDom('name_e').value,
            method: 'GET',
            text: "Updating...",
            success: function ( result, request ) 
            { 
                    var rs1 = grid.getSelectionModel().getSelected();// 返回值为 Record 类型
                    var p = new Plant({
                        doc_code: '0',
                        name: Ext.getDom('name_e').value,
                        label:Ext.getDom('label_e').value,
                        price:Ext.getDom('price_e').value,
                        youx:Ext.getDom('youx_e').value ,
                        indoor: false
                    });
                    var n = store.indexOf(rs1);// 获得点击行的index 
                         
                    //本来想用替换方法 试了几次不爽 还是自己的增删吧              
                    store.insert( n  , p);
                    store.remove(rs1);
                    Ext.MessageBox.alert('访问成功', '数据返回的数据 '+ result.responseText); 
                  
                  
                  
            },
            failure: function ( result, request) 
            { 
                Ext.MessageBox.alert('访问失败', '失败了就没好说的了  (*^__^*) 嘻嘻……: '); 
            } 
        });
                      
                                       
            
            }
        },{
            text: '取消'
        }]
    });

    // 载入数据
    store.load();
    
        
            // 单元格单击后事件处理
        grid.on("click", clickedit, grid);
      
        function clickedit(e) {
          
          var rs1 = grid.getSelectionModel().getSelected();// 返回当前行的记录集
              //getDom 获取Dom元素的方法          
              Ext.getDom('name_e').value=rs1.get('name');  // 
              Ext.getDom('label_e').value=rs1.get('label');   // 
              Ext.getDom('price_e').value=rs1.get('price');  //说 
              Ext.getDom('youx_e').value=rs1.get('youx');    //是否有效
         
        };
    
});
 
   
分享到:
评论
2 楼 山有峰则灵 2009-09-10  
selModel: new Ext.grid.RowSelectionModel({singleSelect:false}),//设置单行选中模式, 否则将无法删除数据  

谢谢~ 呵呵,一下就解决了我的问题
1 楼 mewleo 2008-03-30  
支持,多发点技术实践~


看贴不回,罪过。

相关推荐

    Ext ajax 上传文件

    在IT行业中,Ajax(Asynchronous JavaScript and XML)技术被广泛应用于网页上的异步数据交互,无需刷新整个页面即可实现局部更新。"Ext Ajax 上传文件"这个主题涉及到的是使用Ext JS框架中的Ajax组件来实现文件的...

    ext Ajax库 流行

    3. **数据格式化**:EXT Ajax库支持多种数据格式,包括JSON、XML、HTML等,可以自动解析响应数据,方便数据的处理和展示。 4. **回调函数**:开发者可以设置success、failure和complete回调函数,根据请求状态执行...

    Ext.Ajax.request2.x实现同步请求

    首先,我们需要理解Ajax的本质,它是Asynchronous JavaScript and XML的缩写,虽然现在XML已不再是主要的数据交换格式,但其核心思想——异步通信依然被广泛使用。异步请求允许用户在等待服务器响应的同时继续进行...

    ext动态获取Xml数据并解析信息

    ### ext动态获取XML数据并解析信息 在现代Web开发中,服务器与客户端之间的数据交互是十分常见的需求之一。本文将详细介绍如何使用Java后端技术配合Ext JS前端框架来实现动态获取XML格式的数据,并通过Ext JS对其...

    ajax-ext框架

    Ajax,全称Asynchronous JavaScript and XML(异步JavaScript和XML),是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。Ajax技术的...

    Ext.Ajax.request 小问题收集

    这篇文章将深入探讨`Ext.Ajax.request`的使用,以及在实际应用中可能遇到的小问题。 首先,`Ext.Ajax.request`的基本语法如下: ```javascript Ext.Ajax.request({ url: 'your-url', method: 'GET', // 可选值有...

    ext Ajax桌面程序例子

    Ajax(Asynchronous JavaScript and XML)技术是Web开发中的一种核心技术,它使得网页可以实现异步更新,无需刷新整个页面就能与服务器进行数据交换,极大地提升了用户体验。本示例是一个基于Ajax构建的Web桌面程序...

    Ext3.1 Ajax 精简包以及使用方法

    Ajax,即异步JavaScript和XML(Asynchronous JavaScript and XML),是Ext3.1中的一个核心特性,它允许Web应用在不刷新整个页面的情况下与服务器进行数据交换,提升用户体验。 在Ext3.1中,Ajax功能主要通过`Ext....

    ext/ajax开发资料

    Ajax(Asynchronous JavaScript and XML)技术是EXT库中的核心部分,它使得网页可以异步地与服务器交换数据并更新部分网页内容,无需刷新整个页面。这个“ext/ajax开发资料”压缩包显然提供了关于EXT中Ajax使用方法...

    使用Ext2.0的Ajax连接ArcIMS例子

    ### 使用Ext2.0的Ajax连接ArcIMS的例子详解 #### 一、背景介绍 随着Web技术的发展,GIS(地理信息系统)的应用越来越广泛。在Web GIS领域中,ArcIMS(ArcGIS Image Server)作为一款高性能的图像服务器软件,在地图...

    ext ajax框架

    在AJAX(Asynchronous JavaScript and XML)技术的基础上,EXT提供了一种优雅的方式来实现页面的异步更新,无需刷新整个网页。 EXT框架的核心特点包括: 1. **组件化**:EXT提供了大量的预定义UI组件,如表格、...

    解析Xml构建Ext树形菜单

    在本文中,我们将深入探讨如何使用XML来构建EXT框架中的动态树形菜单。EXT是一个流行的JavaScript库,用于创建丰富的用户界面,而XML则是一种结构化的数据格式,常用于存储和交换数据。结合两者,我们可以创建出功能...

    ext-basex.js 进行Ext.Ajax.request 同步请求 FF无法正常

    `Ext.Ajax.request`是ExtJS中的一个方法,用于发起Ajax(异步JavaScript和XML)请求。它可以执行GET、POST、PUT、DELETE等各种HTTP操作。在默认情况下,这些请求是异步的,这意味着它们不会阻塞页面的其他操作,而是...

    ext_ext_knew7pi_ajax_

    在`knew7pi`这个标签中,可能是指某个个人或团队对EXT 1.1的深入理解和实践,他们分享了一些关于EXT AJAX的实例,包括如何使用EXT组件(如GridPanel、Menu和Window)与服务器进行AJAX交互,实现动态内容展示和用户...

    Ext.data.Store 读取XML属性值

    这篇博客文章《Ext.data.Store 读取XML属性值》可能深入探讨了如何利用`Ext.data.reader.Xml`来解析XML并填充数据存储。 XML是一种结构化数据格式,广泛用于数据交换,尤其是Web服务和API。`Ext.data.reader.Xml`是...

    ext集锦_ajax学习必备

    EXT集锦中的Ajax学习资源是Web开发人员提升技能的重要工具,尤其对于那些专注于EXT框架的开发者来说更是必不可少。Ajax(Asynchronous JavaScript and XML)技术在现代网页应用中扮演着核心角色,它允许页面与服务器...

    Javascript凌厉开发 Ext详解与实践 书本代码

    3. AJAX与JSON:介绍异步JavaScript和XML技术,以及JSON(JavaScript Object Notation)数据交换格式,用于实现前后端数据通信。 4. Ext JS入门:讲解如何引入Ext库,创建基本的组件,以及理解Ext的架构和工作原理。...

Global site tag (gtag.js) - Google Analytics