Extjs4.2 rest 与webapi数据交互----顺便请教了程序员的路该怎么走

这一章接着上一篇

对于Ext.data.Store 介紹 与总结,以及对以前代码的重构与优化

1.对于更新OnUpdate()函数的修改:先上代码:

function OnUpdate(record) {
    //获取要更新的数据
    var functionCode = Ext.getCmp('code').getValue();
    var FunctionName = Ext.getCmp('name').getValue();
    var IsEnabled = Ext.getCmp('isEnable').getValue();
    var Invoker = Ext.getCmp('Invoker').getValue();
    var module = Ext.getCmp('Module').getValue();
    
    record.set('FunctionCode', functionCode);
    record.set('FunctionName', FunctionName);
    record.set('IsEnabled', IsEnabled);
    record.set('Invoker', Invoker);
    record.set('Module', module);

    store.commitChanges();

    win.close();
}

这里面将要修改的record记录传了过来,直接使用record的set方法对数据进行更新,然后用store的commitChanges()方法进行提交。

然后它对应的就是rest的Put方式。

2.rest方式前面讲到都是向后台传值,那么他从后台传出来的值应该怎么办呢。其实细心的读者可能会发现,上面程序是存在问题的,啥问题?如果后台对数据的操作失败了怎么办?我怎么才能知道,这就是问题所在了。

  在网上找了好久才找到方法,在store使用afterRequest,这个在api上没有,也不知道api不全或者其他原因,我试了好几种方法都不行,折腾了快一天了才搞定

大家看下代码:

 store = Ext.create('Ext.data.Store', {
        autoLoad: true,
        autoSync: true,
        pageSize: 20,
        model: 'InterfaceModel',
        proxy: {
            type: 'rest',
            url: 'api/InterfaceManage',
            reader: {
                type: 'json',
                root: 'Data',
                totalProperty: 'TotolRecord',
                successProperty: 'success',
                messageProperty: 'msg'
            },
            writer: {
                type: 'json'
            },
            afterRequest: function (request, success) {
                var result = request.operation.success;

                if (request.action == 'read') {

                }

                else if (request.action == 'create') {
                    if (result) {
                        Ext.Msg.alert('添加提示', '添加成功!');
                        store.reload();
                    } else {
                        Ext.Msg.alert('添加提示', '添加失败!');
                    }
                }

                else if (request.action == 'update') {
                    if (result) {
                        Ext.Msg.alert('提示', '更新成功!');
                        store.reload();
                    }
                    else {
                        Ext.Msg.alert('提示', '更新失败!');
                    }
                }

                else if (request.action == 'destroy') {
                    if (result) {
                        Ext.Msg.alert('提示', '数据删除成功');
                        store.reload();
                    }
                    else {
                        Ext.Msg.alert('提示', '数据删除失败');
                    }
                }
            }
        }

    });

这里面相应的后台程序也需要改

/// <summary>
        /// 更新接口信息
        /// </summary>
        /// <param name="ic">需要更新的数据</param>
        public ReturnMsg Put(InterfaceConfig ic)
        {
            try
            {
                OlandHIPDBEntities db = new OlandHIPDBEntities();

                var data = from item in db.InterfaceConfig
                           where item.ID == ic.ID
                           select item;

                InterfaceConfig old = data.SingleOrDefault();

                old.FunctionCode = ic.FunctionCode;
                old.FunctionName = ic.FunctionName;
                old.Invoker = ic.Invoker;
                old.IsEnabled = ic.IsEnabled;
                old.Module = ic.Module;

                db.SaveChanges();
                return new ReturnMsg() { success = true, msg = "test" };
            }
            catch (Exception)
            {
                return new ReturnMsg() { success = false, msg = "test" };
            }
        }

由于对Extjs的不理解,真的很费力,但如果找对了方法,看起来了又很简单,等今天把列过滤解决掉,这个项目就基本完活了。等下周就要进入wpf的开发了,唉,刚开始熟悉,又要离开,真不舍得。

  再发一点牢骚,程序员的路究竟该怎么走?我其实很迷茫,样样通,公司需要。但是对自己的长期发展不利,样样通的后果就是样样不精。但是你想精通一门也不行,公司不允许,因为他是跟项目定的。有的人说要学会拒绝,但是你敢吗?汗,我也不知道自己在说什么……迷茫中

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

使用各种扫描工具的你,不但踩了“蜜罐”可能还要被团灭了

*本文原创作者:evil7,本文属FreeBuf原创奖励计划,未经许可禁止转载 ? 工作后,越来越没有时间挖洞和写东西了(被世俗的纷争与微弱的工资束缚着),真是...

2178
来自专栏阮一峰的网络日志

国内用户访问维基百科(Wikipedia)的几种方法

世界上最受欢迎的网站之一、知识宝库"维基百科"(Wikipedia.org)在中国大陆是被封锁的,必须借助代理服务器才能打开。

9571
来自专栏吴小龙同學

手把手教你做个人 app

我们都知道,开发一个app很大程度依赖服务端:服务端提供接口数据,然后我们展示;另外,开发一个app,还需要美工协助切图。没了接口,没了美工,app似乎只能做成...

3187
来自专栏静晴轩

Rake让Jekyll写博更优雅

于想拥有个人站点品牌的人来讲,现如今是一个很好的时期。至少 Hexo、Jekyll、Leanote、WordPress 、FarBox Octopress、gh...

3185
来自专栏Python Web学习记录及整理

Django开发在线教育平台--学习整理(一)

首先,打开cmd,cd到存放django项目的文件夹,创建一个新工程(也可以用虚拟环境virtualenv):

5318
来自专栏微信音视频小程序

教你1天搭建自己的“微视”

A simple iOS Application project is shown below to illustrate how to configure S...

7325
来自专栏章鱼的慢慢技术路

使用Python的turtle(海龟)模块画图

1552
来自专栏工科狗和生物喵

总算搞定了域名(好吧,我一开始忘了)

正文之前 我是从大二下学期开始入程序员这个坑的。那个时候恰逢遇到了我计算机方面的启蒙学长,然后他带着我走了一段很长的路,其中就包括网站建设这个方面。我前端后端都...

43813
来自专栏Android 技术栈

Android 阿里百川cps SDK接入流程

因公司业务需求,需接入阿里百川SDK和京东联盟cps相关服务,为了跳到淘宝和京东,用户购买后得到佣金。接入过程中遇到很多坑,网上相关资料也甚少,虽然东西不算多,...

981
来自专栏卡少编程之旅

纯前端json数据生成excel下载的实现

3196

扫码关注云+社区