Session版購物車+MVC局部刷新

来源:http://www.cnblogs.com/xiangyisheng/archive/2017/05/05/6814419.html
-Advertisement-
Play Games

效果圖: 大致代碼: 1 <script type="text/javascript"> 2 $(function () { 3 LoadOrderDetailList(); 4 }); 5 function AddToOrderDetailInfo() { 6 $("#AddToOrderDeta ...


 效果圖: 大致代碼:
 1 <script type="text/javascript">
 2     $(function () {
 3         LoadOrderDetailList();
 4     });
 5     function AddToOrderDetailInfo() {
 6         $("#AddToOrderDetail").attr("disabled", true);
 7         var form = $("#form_Create").serialize();
 8         $.post("/Sample/AddToOrderDetail", form, function (msg, status) {
 9             if (msg.Result == "OK") {
10                 $("#hShipDate").val($("#ShipDate").val());
11                 $("#ShipDate").attr("disabled", true);
12                 $("#hReceiptDate").val($("#ReceiptDate").val());
13                 $("#ReceiptDate").attr("disabled", true);
14                 $("#TrackingNumber").attr("readonly", true);
15                 $("#Note").attr("readonly", true);
16                 $("#ProductName").val("");
17                 $("#Qty").val("");
18                 $("#dNote").val("");
19                 AlertMsg("AddToOrderDetail", "success", msg.Message);
20             } else {
21                 AlertMsg("AddToOrderDetail", "Failure", msg.Message);
22             }
23             $("#AddToOrderDetail").attr("disabled", false);
24             LoadOrderDetailList();
25         });
26     }
27     function LoadOrderDetailList() {
28         $("#tbOrderDetailsList tbody").load("/Sample/LoadOrderDetailList");
29     }
30     function RemoveOrderDetail(id) {
31         $.post("/Sample/RemoveOrderDetail", { id: id }, function (data) {
32             if (data == "empty") {
33                 $("#ShipDate").attr("disabled", false);
34                 $("#ReceiptDate").attr("disabled", false);
35                 $("#TrackingNumber").attr("readonly", false);
36                 $("#Note").attr("readonly", false);
37             }
38             LoadOrderDetailList();
39         });
40     }
41     function SaveAll() {
42         $("#SaveAll").attr("disabled", true);
43         var form = $("#form_Create").serialize();
44         $.post("/Sample/CreateSampleOrder", form,
45         function (msg) {
46             if (msg.Result == "OK") {
47                 $("#ShipDate").attr("disabled", false);
48                 $("#ReceiptDate").attr("disabled", false);
49                 $("#TrackingNumber").attr("readonly", false);
50                 $("#Note").attr("readonly", false);
51                 $("#hShipDate").val("");
52                 $("#ShipDate").val("");
53                 $("#hReceiptDate").val("");
54                 $("#ReceiptDate").val("");
55                 $("#TrackingNumber").val("");
56                 $("#Note").val("");
57                
58                 AlertMsg("SaveAll", "success", msg.Message);
59             } else{
60                 AlertMsg("SaveAll", "Failure", msg.Message);
61             }
62             $("#SaveAll").attr("disabled", false);
63             LoadOrderDetailList();
64         });
65     }
66 </script>
JavaScript Code
 1 @using System.Data;
 2 @model DataTable
 3 @if (Model != null)
 4 {
 5     if (Model.Rows.Count > 0)
 6     {
 7         foreach (DataRow item in Model.Rows)
 8         {
 9     <tr>
10         <td>
11             <a style="cursor:pointer" onclick="GetSampleOrderDetail('@item["ID"]')">Select</a>
12         </td>
13         <td>
14             @item["OrderNumber"]
15         </td>
16         <td>
17             @item["ProductName"]
18         </td>
19         <td>
20             @item["Qty"]
21         </td>
22         <td>
23             @item["Note"]
24         </td>
25         <td>
26             <a style="cursor:pointer" onclick="DelSampleOrderDetail('@item["ID"]','@item["OrderNumber"]')">Delete</a>
27         </td>
28     </tr>
29         }
30     }
31 }
_SampleOrderDetailList.cshtml
  1 <form method="post" id="form_Create">
  2 <div class="panel-body">
  3     <div class="" id="order_Detail">
  4         <div class="row">
  5             <div class="row no-gutter mt5">
  6                 <div class="col-lg-4">
  7                     <span class="inline-any mt5">Issued By:</span></div>
  8                 <div class="col-lg-8">
  9                     <input type="text" class="form-control w200 mr10" value="@Session["Account"]" name="Issued" id="Issued"
 10                         readonly="readonly"></div>
 11             </div>
 12             <div class="row no-gutter mt5">
 13                 <div class="col-lg-4">
 14                     <span class="inline-any mt5">Ship Date:</span></div>
 15                 <div class="col-lg-8">
 16                     <input type="hidden" name="hShipDate" value="" id="hShipDate">
 17                     <input type="text" class="form-control w200" onfocus="WdatePicker({lang:'en',dateFmt:'yyyy-MM-dd',maxDate:'#F{$dp.$D(\'ReceiptDate\')}'})"
 18                         value="" id="ShipDate" name="ShipDate" realvalue="">
 19                 </div>
 20             </div>
 21             <div class="row no-gutter mt5">
 22                 <div class="col-lg-4">
 23                     <span class="inline-any mt5">Receipt Date:</span></div>
 24                 <div class="col-lg-8">
 25                     <input type="hidden" name="hReceiptDate" value="" id="hReceiptDate">
 26                     <input type="text" class="form-control w200" onfocus="WdatePicker({lang:'en',dateFmt:'yyyy-MM-dd',minDate:'#F{$dp.$D(\'ShipDate\')}'})"
 27                         value="" id="ReceiptDate" name="ReceiptDate" realvalue=""></div>
 28             </div>
 29             <div class="row no-gutter mt5">
 30                 <div class="col-lg-4">
 31                     <span class="inline-any mt5">Tracking Number:</span></div>
 32                 <div class="col-lg-8">
 33                     <input type="text" class="form-control w200 mr10" value="" name="TrackingNumber"
 34                         id="TrackingNumber">
 35                 </div>
 36             </div>
 37             <div class="row no-gutter mt5">
 38                 <div class="col-lg-4">
 39                     <span class="inline-any mt5">Sampl Order Note:</span></div>
 40                 <div class="col-lg-8">
 41                     <textarea class="w100p h100" id="Note" name="Note"></textarea>
 42                 </div>
 43             </div>
 44             <hr />
 45             <div class="row no-gutter mt5">
 46                 <div class="col-lg-4">
 47                     <span class="inline-any mt5">Product Name:</span></div>
 48                 <div class="col-lg-8">
 49                     <input type="text" class="form-control w200 mr10" value="" name="ProductName" id="ProductName">
 50                 </div>
 51             </div>
 52             <div class="row no-gutter mt5">
 53                 <div class="col-lg-4">
 54                     <span class="inline-any mt5">Product Qty:</span></div>
 55                 <div class="col-lg-8">
 56                     <input type="text" class="form-control w200 mr10" value="" name="Qty" id="Qty">
 57                 </div>
 58             </div>
 59             <div class="row no-gutter mt5">
 60                 <div class="col-lg-4">
 61                     <span class="inline-any mt5">Sampl Order Detail Note:</span></div>
 62                 <div class="col-lg-8">
 63                     <textarea class="w100p h100" id="dNote" name="dNote"></textarea>
 64                 </div>
 65             </div>
 66             <div class="row no-gutter mt10">
 67             </div>
 68             <div class="row no-gutter mt20">
 69                 <div class="col-lg-4">
 70                 </div>
 71                 <div class="col-lg-8">
 72                     <input type="button" value="Add to" id="AddToOrderDetail" class="btn btn-primary"
 73                         onclick="AddToOrderDetailInfo();" />
 74                 </div>
 75             </div>
 76         </div>
 77     </div>
 78 </div>
 79 </form>
 80 
 81 <table class="table table-bordered table-striped table-condensed table-hover fixheader"
 82     id="tbOrderDetailsList" style="width: auto">
 83     <thead>
 84         <tr>
 85             <th width="60">
 86                 Operate
 87             </th>
 88             <th width="50">
 89                 number
 90             </th>
 91             <th width="150">
 92                 Product Name
 93             </th>
 94             <th width="70">
 95                 Qty
 96             </th>
 97             <th width="300">
 98                 Note
 99             </th>
100         </tr>
101     </thead>
102     <tbody>
103     </tbody>
104 </table>
View Code
  1 public ActionResult CreateSampleOrder(FormCollection form)
  2 {
  3     try
  4     {
  5         if (Session["OrderDetailList"] == null)
  6         {
  7             return Json(new { Result = "Error", Message = "No data!" });
  8         }
  9         string createby = form["Issued"] != null ? form["Issued"].ToString() : string.Empty;
 10         if (createby.Trim() == string.Empty)
 11         {
 12             return Json(new { Result = "Error", Message = "Please login again!" });
 13         }
 14         string shipdate = form["ShipDate"] != null ? form["ShipDate"].ToString() : string.Empty;
 15         string hshipdate = form["hShipDate"] != null ? form["hShipDate"].ToString() : string.Empty;
 16         //if (shipdate.Trim() == string.Empty && hshipdate.Trim() == string.Empty)
 17         //{
 18         //    return Json(new { Result = "Error", Message = "Ship date cannot be empty" });
 19         //}
 20         string receiptdate = form["ReceiptDate"] != null ? form["ReceiptDate"].ToString() : string.Empty;
 21         string hreceiptdate = form["hReceiptDate"] != null ? form["hReceiptDate"].ToString() : string.Empty;
 22         //if (receiptdate.Trim() == string.Empty && hreceiptdate.Trim() == string.Empty)
 23         //{
 24         //    return Json(new { Result = "Error", Message = "Receipt date cannot be empty" });
 25         //}
 26         string trackingnumber = form["TrackingNumber"] != null ? form["TrackingNumber"].ToString() : string.Empty;
 27         //if (trackingnumber.Trim() == string.Empty)
 28         //{
 29         //    return Json(new { Result = "Error", Message = "Tracking number cannot be empty" });
 30         //}
 31         string note = form["Note"] != null ? form["Note"].ToString() : string.Empty;
 32         string sql = "";
 33         sql += @"INSERT INTO Sample_Order(ShipDate, ReceiptDate, TrackingNumber, Note, CreateDate, CreateBy)VALUES(@ShipDate, @ReceiptDate, @TrackingNumber, @Note, GETDATE(), @CreateBy);";
 34         sql += @"UPDATE Sample_Order SET OrderNumber=@@IDENTITY WHERE ID=@@IDENTITY;";
 35         sql += @"SELECT @@IDENTITY;";
 36         SqlParameter[] pars = new SqlParameter[]
 37         {
 38                 new SqlParameter("@ShipDate",IsEmptyToDBNull(hshipdate)),
 39                 new SqlParameter("@ReceiptDate",IsEmptyToDBNull(hreceiptdate)),
 40                 new SqlParameter("@TrackingNumber",trackingnumber),
 41                 new SqlParameter("@Note",note),
 42                 new SqlParameter("@CreateBy",createby)
 43         };
 44         int ordernumber = SQLHelper.ExecuteScalar(sql, pars);
 45         List<OrderDetail> list = new List<OrderDetail>();
 46         list = Session["OrderDetailList"] as List<OrderDetail>;
 47         if (ordernumber > 0)
 48         {
 49             sql = "";
 50             foreach (OrderDetail item in list)
 51             {
 52                 sql += @"INSERT INTO Sample_OrderDetail(OrderNumber, ProductName, Qty, Note)VALUES(";
 53                 sql += "N'" + ordernumber + "',";
 54                 sql += "N'" + item.ProductName + "',";
 55                 sql += "N'" + item.Qty + "',";
 56                 sql += "N'" + item.Note + "'";
 57                 sql += @")
 58 ";
 59             }
 60             if (SQLHelper.ExecuteNonQuery(sql) > 0)
 61             {
 62                 Session["OrderDetailList"] = null;
 63                 return Json(new { Result = "OK", Message = "Save all success!" });
 64             }
 65             else
 66             {
 67                 return Json(new { Result = "Error", Message = "Save all failed" });
 68             }
 69         }
 70         else
 71         {
 72             return Json(new { Result = "Error", Message = "Save all failed" });
 73         }
 74     }
 75     catch (Exception ex)
 76     {
 77         return Json(new { Result = "Error", Message = ex.Message });
 78     }
 79 }
 80 public ActionResult LoadOrderDetailList()
 81 {
 82     return PartialView("_SampleOrderDetailList");
 83 }
 84 public ActionResult AddToOrderDetail(FormCollection form)
 85 {
 86     try
 87     {
 88         string createby = form["Issued"] != null ? form["Issued"].ToString() : string.Empty;
 89         if (createby.Trim() == 	   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 大概所有做APP的公司都是不願意做自定義的,哪怕自己的功能再爛也願意慢慢修補不願意開源一部分。 卡牛… 51信用卡… 一次次的逾期 自己寫個信用卡管理工具,從郵件中提取賬單,還款後做個登記,到了還款日前檢查是否還完,沒還完就開始給自己發郵件騷擾吧,現在的手機郵箱都有郵件通知了,然後簡訊一條接一條,想... ...
  • webservice 可以用於分散式應用程式之間的交互,和不同程式之間的交互。 概念性的東西就不說太多,下麵開始創建一個簡單的webservice的例子。這裡我用的是Visual Studio 2015開發工具。 首先創建一個空的Web應用程式。 然後滑鼠右鍵點擊項目,選擇 添加>新建項。 選擇We ...
  • 在好多的.net的書籍中都看到過逆變和協變的概念,也在網上搜了一些關於這兩個概念的解釋,但是一直感覺似懂非懂的,直到最近在項目中實際遇到了一個問題,恰好用到了逆變,總算對逆變的理解又進了一步。 逆變只能用到泛型介面和委托中,以前一直不理解為什麼要用在泛型中,今天終於想明白了。在介紹逆變之前,先來說說 ...
  • 一直很羡慕和佩服園子中伍華聰的界面設計和佈局。好多年都沒有真正寫過C/S項目了,今天翻出來6年前剛開始學習WinForm的時候寫的一個簡單的HR管理系統,思緒一下子很複雜,記得是6年前的夏天,天氣很熱,租住的房子里沒有空調,身邊放個扇子,人家周末出去玩的時候,我還在拼命的敲著代碼,一心只想著好好提高 ...
  • 在使用Sqlhelper類時,出現cs0103錯誤 當前上下文中不存在名稱configurationmanager 解決方案,除了using引用using System.Configuration外,還需在解決方案資源管理器里的“引用”中添加“System.Configuration”。 ...
  • 這個訪問層的代碼實際上是園子里某個前輩的,本人只是覺得好使,記錄了下來。 本訪問層需要通過Nuget安裝EntityFramework Core,不過個人認為EF 6同樣可以使用。 搭配資料庫,最好是Sql Server(微軟支持,你懂的) 下麵貼代碼 先是IRepository.cs 然後是實現 ...
  • 雖然2月初就回來了,可 CoreCRM 一直到5月才開始恢復開發,期間是各種生活中的意外和不方便。 1. 為什麼要重構 首先是一件很值得高興的事情:CoreCRM 有了第一位 contributor! "Larry" 是我原來的一位實習生,現在在某公司做前端開發。因為 Larry 的加入,我就不再是 ...
  • C#獲取操作系統相關的信息,如記憶體大小,CPU大小,機器名,環境變數等操作系統軟體、硬體相關信息 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...