这一章接着上一篇

对于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的开发了,唉,刚开始熟悉,又要离开,真不舍得。

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

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

  1. 后端程序员之路 30、webapi测试工具的一点想法

    有了webapi,对应的,也就要有各种语言的sdk,有时候,还要有一个好用的api测试工具.sdk和api测试工具在功能上有一些异同,有时候测试工具会直接基于sdk来制作. 它们通常包含: 1.htt ...

  2. Hybrid小程序混合开发之路 - 数据交互

    HTML+CSS是历史悠久.超高自由度.控制精准.表现能力极强.编码简单.学习门槛超低.真跨平台的一种UI界面开发方式. 本文介绍的是微信小程序和H5混合开发的一种数据交互方式. 很多应用在原生界面中 ...

  3. ASP.Net WebAPI与Ajax进行跨域数据交互时Cookies数据的传递

    前言 最近公司项目进行架构调整,由原来的三层架构改进升级到微服务架构(准确的说是服务化,还没完全做到微的程度,颗粒度没那么细),遵循RESTFull规范,使前后端完全分离,实现大前端思想.由于是初次尝 ...

  4. 跨域WebApi的Jquery EasyUI的数据交互

    目录 1       大概思路... 1 2       创建WebAPI 1 3       创建CrossMainController并编写... 1 4       Nuget安装microso ...

  5. ASP.Net中关于WebAPI与Ajax进行跨域数据交互时Cookies数据的传递

    本文主要介绍了ASP.Net WebAPI与Ajax进行跨域数据交互时Cookies数据传递的相关知识.具有很好的参考价值.下面跟着小编一起来看下吧 前言 最近公司项目进行架构调整,由原来的三层架构改 ...

  6. 《ServerSuperIO Designer IDE使用教程》- 6.增加与阿里云物联网(IOT)对接服务,实现数据交互。发布:v4.2.4 版本

    v4.2.4 更新内容:1.增加了对接阿里物联网平台的服务.下载地址:官方下载   6. 增加与阿里云物联网(IOT)对接服务,实现数据交互  6.1    概述 为了满足业务系统数据上云的要求,Se ...

  7. 《ServerSuperIO Designer IDE使用教程》-2.与硬件网关数据交互,并进行数据级联转发,直到云端。发布:v4.2.1版本

    v4.2.1 更新内容:1.重新定义数据转发文本协议,使网关与ServerSuperIO以及之间能够相关交互数据.2.扩展ServerSuperIO动态数据类的方法,更灵活.3.修复Designer增 ...

  8. 《进击吧!Blazor!》第一章 4.数据交互

    <进击吧!Blazor!>是本人与张善友老师合作的Blazor零基础入门系列视频,此系列能让一个从未接触过Blazor的程序员掌握开发Blazor应用的能力. 视频地址:https://s ...

  9. 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~

    一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...

随机推荐

  1. SQL笔试基础

    SQLSERVER服务器中,给定表table1 中有两个字段 ID.LastUpdateDate,ID表示更新的事务号,LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后 ...

  2. python 实践项目 强密码检测

    需求:写一个函数,它使用正则表达式,确保传入的口令字符串是强口令.强口令的定义是:长度不少于 8 个字符,同时包含大写和小写字符,至少有一位数字.你可能需要用多个正则表达式来测试该字符串,以保证它的强 ...

  3. 利用python监测linux上的服务(简单实现服务宕掉自动发送邮件)

    python 这里用到了四个python 模块 : import time (时间模块) import re (正则模块) import socket (监测端口模块)import yagmail ( ...

  4. 叙述 activemq 与spring 主题实现 小功能实现

    在上一篇文章里 我说到了 maven的配置  我现在直接说 xml配置 首先我先描述 生产者的信息 <?xml version="1.0" encoding="UT ...

  5. 让IE8支持html5中的video标签

    这是一篇综合几个前辈的解决方案. 使用video的时候,要遇到的问题. ①不兼容ie9及其以下版本 在<head>里添加两行, 参考张鑫旭前辈的博客,但是在ie8中薄播放. <!-- ...

  6. ECharts初体验

    ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等) ...

  7. zabbix items

    zabbixversion:3.2.8 在添加zabbix items的时候,注意store value的设置非常实用,有三种选择: As is:d对接受到的结果不做任何处理 Delta(speed ...

  8. shell解析my.cnf配置文件

    my.cnf配置格式如下 vi my.cnf[client]port=3306socket=/tmp/mysql.socket [mysqld]port=3306server-id=1datadir= ...

  9. 叠加dgv中相同的行信息

    俗话说,磨刀不误砍柴工,先说一下情况.点击按钮后往dgv中添加一行(行中字段含有数量),再点击一次,又添加一行. 假如这两条信息一样.则要进行叠加(数量相加).我的思路是这样的:每次点击一次就往dgv ...

  10. MFC为多个控件绑定同一个函数

    方式一: afx_msg void OnButtonClick(UINT nID); ON_CONTROL_RANGE(BN_CLICKED, IDC_BUTTON_1, IDC_BUTTON_XX, ...