zoukankan      html  css  js  c++  java
  • API接口数据交互——DataGrid系列

      1 …………
      2 
      3 @(Html.DevExtreme().DataGrid<Model>()
      4   …………
      5   .ID("gridMetting")
      6   .LoadPanel(n=>n.Enabled(false))
      7   .OnEditingStart("onEditingStart")
      8   .OnInitNewRow("onInitNewRow")
      9   .OnSaving("onSaving")
     10   …………
     11 
     12 )
     13 
     14 //加载提示框
     15 @(Html.DevExtreme().LoadPanel()
     16   .ID("loadPanel")
     17   .Position(p => p.Of("#gridMetting"))
     18   .Visible(false)
     19 )
     20 
     21 <script>
     22 var loadPanel, dataGrid, isEdite, editeData;
     23 //初始化
     24 $(function () {
     25   loadPanel = $("#loadPanel").dxLoadPanel("instance");
     26   dataGrid = $("#gridMetting").dxDataGrid("instance");
     27   //初始加载数据
     28   loadDataGrid();
     29 });
     30 
     31 //修改事件
     32 function onEditingStart(e) {
     33   isEdite = true;
     34   editeData = e.data;
     35 }
     36 //添加事件
     37 function onInitNewRow(e) {
     38   isEdite = false;
     39 }
     40 
     41 //控件加载数据
     42 function loadDataGrid() {
     43   loadPanel.show();
     44   dataGrid.option("noDataText", "正在加载...");
     45   sendRequest('@Url.RouteUrl(new { controller = "MettingReport", action = "GetMettingReportAllList" })', "get", {id:0})
     46   .then(function (data) {
     47     loadPanel.hide();
     48     //处理API接口返回数据
     49     if (data.Success) {
     50       if (data.Response) {
     51         //给控件附加数据源
     52         dataGrid.option("dataSource", data.Response);
     53         dataGrid.option("noDataText", "没有数据");
     54       }
     55       else {
     56         dataGrid.option("noDataText", "没有数据");
     57       }
     58     } else {
     59       dataGrid.option("noDataText", "没有数据");
     60     }
     61   });
     62 }
     63 
     64 //保存事件
     65 function onSaving(e) {
     66   var change = e.changes[0];
     67   if (change) {
     68     e.cancel = true;
     69     loadPanel.show();
     70     e.promise = saveChange(change).always(() => { loadPanel.hide(); })
     71       .done(() => {
     72         //操作成功
     73         e.component.cancelEditData(); //关闭编辑弹框
     74         loadDataGrid();
     75       });
     76   }
     77 }
     78 
     79 //保存改变数据
     80 function saveChange(change) {
     81   var d = $.Deferred();
     82   if (change.type === "update") {
     83     editeData=$.extend(editeData, change.data);
     84     editData(d, change);
     85   }
     86   else if (change.type === "insert" ) {
     87     editeData=$.extend(editeData, change.data);
     88     insertData(d, change);
     89   }
     90   else if (change.type === "remove") {
     91     removeData(d, change);
     92   }
     93   else {
     94     d.resolve();
     95   }
     96   return d.promise();
     97 }
     98 
     99 //添加
    100 function insertData(d, change) {
    101   sendRequest('@Url.RouteUrl(new { controller = "MettingReport", action = "UpdateMettingReport" })', "put", editeData)
    102   .then(function (r) {
    103     if (r) {
    104       if (r.Success) {
    105         d.resolve();
    106       }
    107       else {
    108         d.reject(r.Msg);
    109       }
    110     }
    111     else {
    112       d.resolve();
    113     }
    114   });
    115 
    116   return d;
    117 }
    118 //修改
    119 function editData(d, change) {
    120   sendRequest('@Url.RouteUrl(new { controller = "MettingReport", action = "AddMettingReport" })', "post", editeData)
    121   .then(function (r) {
    122     if (r) {
    123       if (r.Success) {
    124         d.resolve();
    125         //成功
    126       }
    127       else {
    128         d.reject(r.Msg);
    129         //失败
    130       }
    131     }
    132     else {
    133       d.resolve();
    134     }
    135   });
    136 
    137   return d;
    138 }
    139 //删除
    140 function removeData(d, change) {
    141   sendRequest('@Url.RouteUrl(new { controller = "MettingReport", action = "DeleteMettingReport" })', "delete", { id: change.key })
    142    .then(function (r) {
    143 
    144     if (r) {
    145       if (r.Success) {
    146         d.resolve();
    147         //成功
    148       }
    149       else {
    150         d.reject(r.Msg);
    151         //失败
    152       }
    153     }
    154     else {
    155       d.resolve();
    156     }
    157   });
    158 
    159   return d;
    160 
    161 }
    162 //发送请求
    163 function sendRequest(url, method, data) {
    164   method = method || "GET";
    165   return $.ajax(url, {
    166     method: method,
    167     data: data,
    168     cache: false,
    169     xhrFields: { withCredentials: true }
    170   });
    171 }
    172 
    173 </script>
  • 相关阅读:
    【Abode Air程序开发】在设备上进行安装
    【Abode Air程序开发】移动设备、桌面和浏览器应用程序开发的差异
    【Abode Air程序开发】移动设备、桌面和浏览器应用程序开发的差异
    【Abode Air程序开发】Flex air文件打包和运行
    【Abode Air程序开发】Flex air文件打包和运行
    【Adobe Air程序开发】eclipse安装flash builder 4.7插件以及java、flex整合开发
    【Adobe Air程序开发】eclipse安装flash builder 4.7插件以及java、flex整合开发
    【Adobe Air程序开发】用Adobe Flex3开发AIR应用程序–入门指南
    【Adobe Air程序开发】用Adobe Flex3开发AIR应用程序–入门指南
    【JAVA开发】eclipse最新版本Eclipse Neon
  • 原文地址:https://www.cnblogs.com/xiaonanmu/p/15234224.html
Copyright © 2011-2022 走看看