效果图:
大致代码:
 <script type="text/javascript">
$(function () {
LoadOrderDetailList();
});
function AddToOrderDetailInfo() {
$("#AddToOrderDetail").attr("disabled", true);
var form = $("#form_Create").serialize();
$.post("/Sample/AddToOrderDetail", form, function (msg, status) {
if (msg.Result == "OK") {
$("#hShipDate").val($("#ShipDate").val());
$("#ShipDate").attr("disabled", true);
$("#hReceiptDate").val($("#ReceiptDate").val());
$("#ReceiptDate").attr("disabled", true);
$("#TrackingNumber").attr("readonly", true);
$("#Note").attr("readonly", true);
$("#ProductName").val("");
$("#Qty").val("");
$("#dNote").val("");
AlertMsg("AddToOrderDetail", "success", msg.Message);
} else {
AlertMsg("AddToOrderDetail", "Failure", msg.Message);
}
$("#AddToOrderDetail").attr("disabled", false);
LoadOrderDetailList();
});
}
function LoadOrderDetailList() {
$("#tbOrderDetailsList tbody").load("/Sample/LoadOrderDetailList");
}
function RemoveOrderDetail(id) {
$.post("/Sample/RemoveOrderDetail", { id: id }, function (data) {
if (data == "empty") {
$("#ShipDate").attr("disabled", false);
$("#ReceiptDate").attr("disabled", false);
$("#TrackingNumber").attr("readonly", false);
$("#Note").attr("readonly", false);
}
LoadOrderDetailList();
});
}
function SaveAll() {
$("#SaveAll").attr("disabled", true);
var form = $("#form_Create").serialize();
$.post("/Sample/CreateSampleOrder", form,
function (msg) {
if (msg.Result == "OK") {
$("#ShipDate").attr("disabled", false);
$("#ReceiptDate").attr("disabled", false);
$("#TrackingNumber").attr("readonly", false);
$("#Note").attr("readonly", false);
$("#hShipDate").val("");
$("#ShipDate").val("");
$("#hReceiptDate").val("");
$("#ReceiptDate").val("");
$("#TrackingNumber").val("");
$("#Note").val(""); AlertMsg("SaveAll", "success", msg.Message);
} else{
AlertMsg("SaveAll", "Failure", msg.Message);
}
$("#SaveAll").attr("disabled", false);
LoadOrderDetailList();
});
}
</script>

JavaScript Code

 @using System.Data;
@model DataTable
@if (Model != null)
{
if (Model.Rows.Count > 0)
{
foreach (DataRow item in Model.Rows)
{
<tr>
<td>
<a style="cursor:pointer" onclick="GetSampleOrderDetail('@item["ID"]')">Select</a>
</td>
<td>
@item["OrderNumber"]
</td>
<td>
@item["ProductName"]
</td>
<td>
@item["Qty"]
</td>
<td>
@item["Note"]
</td>
<td>
<a style="cursor:pointer" onclick="DelSampleOrderDetail('@item["ID"]','@item["OrderNumber"]')">Delete</a>
</td>
</tr>
}
}
}

_SampleOrderDetailList.cshtml

 <form method="post" id="form_Create">
<div class="panel-body">
<div class="" id="order_Detail">
<div class="row">
<div class="row no-gutter mt5">
<div class="col-lg-4">
<span class="inline-any mt5">Issued By:</span></div>
<div class="col-lg-8">
<input type="text" class="form-control w200 mr10" value="@Session["Account"]" name="Issued" id="Issued"
readonly="readonly"></div>
</div>
<div class="row no-gutter mt5">
<div class="col-lg-4">
<span class="inline-any mt5">Ship Date:</span></div>
<div class="col-lg-8">
<input type="hidden" name="hShipDate" value="" id="hShipDate">
<input type="text" class="form-control w200" onfocus="WdatePicker({lang:'en',dateFmt:'yyyy-MM-dd',maxDate:'#F{$dp.$D(\'ReceiptDate\')}'})"
value="" id="ShipDate" name="ShipDate" realvalue="">
</div>
</div>
<div class="row no-gutter mt5">
<div class="col-lg-4">
<span class="inline-any mt5">Receipt Date:</span></div>
<div class="col-lg-8">
<input type="hidden" name="hReceiptDate" value="" id="hReceiptDate">
<input type="text" class="form-control w200" onfocus="WdatePicker({lang:'en',dateFmt:'yyyy-MM-dd',minDate:'#F{$dp.$D(\'ShipDate\')}'})"
value="" id="ReceiptDate" name="ReceiptDate" realvalue=""></div>
</div>
<div class="row no-gutter mt5">
<div class="col-lg-4">
<span class="inline-any mt5">Tracking Number:</span></div>
<div class="col-lg-8">
<input type="text" class="form-control w200 mr10" value="" name="TrackingNumber"
id="TrackingNumber">
</div>
</div>
<div class="row no-gutter mt5">
<div class="col-lg-4">
<span class="inline-any mt5">Sampl Order Note:</span></div>
<div class="col-lg-8">
<textarea class="w100p h100" id="Note" name="Note"></textarea>
</div>
</div>
<hr />
<div class="row no-gutter mt5">
<div class="col-lg-4">
<span class="inline-any mt5">Product Name:</span></div>
<div class="col-lg-8">
<input type="text" class="form-control w200 mr10" value="" name="ProductName" id="ProductName">
</div>
</div>
<div class="row no-gutter mt5">
<div class="col-lg-4">
<span class="inline-any mt5">Product Qty:</span></div>
<div class="col-lg-8">
<input type="text" class="form-control w200 mr10" value="" name="Qty" id="Qty">
</div>
</div>
<div class="row no-gutter mt5">
<div class="col-lg-4">
<span class="inline-any mt5">Sampl Order Detail Note:</span></div>
<div class="col-lg-8">
<textarea class="w100p h100" id="dNote" name="dNote"></textarea>
</div>
</div>
<div class="row no-gutter mt10">
</div>
<div class="row no-gutter mt20">
<div class="col-lg-4">
</div>
<div class="col-lg-8">
<input type="button" value="Add to" id="AddToOrderDetail" class="btn btn-primary"
onclick="AddToOrderDetailInfo();" />
</div>
</div>
</div>
</div>
</div>
</form> <table class="table table-bordered table-striped table-condensed table-hover fixheader"
id="tbOrderDetailsList" style="width: auto">
<thead>
<tr>
<th width="60">
Operate
</th>
<th width="50">
number
</th>
<th width="150">
Product Name
</th>
<th width="70">
Qty
</th>
<th width="300">
Note
</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
 public ActionResult CreateSampleOrder(FormCollection form)
{
try
{
if (Session["OrderDetailList"] == null)
{
return Json(new { Result = "Error", Message = "No data!" });
}
string createby = form["Issued"] != null ? form["Issued"].ToString() : string.Empty;
if (createby.Trim() == string.Empty)
{
return Json(new { Result = "Error", Message = "Please login again!" });
}
string shipdate = form["ShipDate"] != null ? form["ShipDate"].ToString() : string.Empty;
string hshipdate = form["hShipDate"] != null ? form["hShipDate"].ToString() : string.Empty;
//if (shipdate.Trim() == string.Empty && hshipdate.Trim() == string.Empty)
//{
// return Json(new { Result = "Error", Message = "Ship date cannot be empty" });
//}
string receiptdate = form["ReceiptDate"] != null ? form["ReceiptDate"].ToString() : string.Empty;
string hreceiptdate = form["hReceiptDate"] != null ? form["hReceiptDate"].ToString() : string.Empty;
//if (receiptdate.Trim() == string.Empty && hreceiptdate.Trim() == string.Empty)
//{
// return Json(new { Result = "Error", Message = "Receipt date cannot be empty" });
//}
string trackingnumber = form["TrackingNumber"] != null ? form["TrackingNumber"].ToString() : string.Empty;
//if (trackingnumber.Trim() == string.Empty)
//{
// return Json(new { Result = "Error", Message = "Tracking number cannot be empty" });
//}
string note = form["Note"] != null ? form["Note"].ToString() : string.Empty;
string sql = "";
sql += @"INSERT INTO Sample_Order(ShipDate, ReceiptDate, TrackingNumber, Note, CreateDate, CreateBy)VALUES(@ShipDate, @ReceiptDate, @TrackingNumber, @Note, GETDATE(), @CreateBy);";
sql += @"UPDATE Sample_Order SET OrderNumber=@@IDENTITY WHERE ID=@@IDENTITY;";
sql += @"SELECT @@IDENTITY;";
SqlParameter[] pars = new SqlParameter[]
{
new SqlParameter("@ShipDate",IsEmptyToDBNull(hshipdate)),
new SqlParameter("@ReceiptDate",IsEmptyToDBNull(hreceiptdate)),
new SqlParameter("@TrackingNumber",trackingnumber),
new SqlParameter("@Note",note),
new SqlParameter("@CreateBy",createby)
};
int ordernumber = SQLHelper.ExecuteScalar(sql, pars);
List<OrderDetail> list = new List<OrderDetail>();
list = Session["OrderDetailList"] as List<OrderDetail>;
if (ordernumber > )
{
sql = "";
foreach (OrderDetail item in list)
{
sql += @"INSERT INTO Sample_OrderDetail(OrderNumber, ProductName, Qty, Note)VALUES(";
sql += "N'" + ordernumber + "',";
sql += "N'" + item.ProductName + "',";
sql += "N'" + item.Qty + "',";
sql += "N'" + item.Note + "'";
sql += @")
";
}
if (SQLHelper.ExecuteNonQuery(sql) > )
{
Session["OrderDetailList"] = null;
return Json(new { Result = "OK", Message = "Save all success!" });
}
else
{
return Json(new { Result = "Error", Message = "Save all failed" });
}
}
else
{
return Json(new { Result = "Error", Message = "Save all failed" });
}
}
catch (Exception ex)
{
return Json(new { Result = "Error", Message = ex.Message });
}
}
public ActionResult LoadOrderDetailList()
{
return PartialView("_SampleOrderDetailList");
}
public ActionResult AddToOrderDetail(FormCollection form)
{
try
{
string createby = form["Issued"] != null ? form["Issued"].ToString() : string.Empty;
if (createby.Trim() == string.Empty)
{
return Json(new { Result = "Error", Message = "Please login again!" });
}
string shipdate = form["ShipDate"] != null ? form["ShipDate"].ToString() : string.Empty;
string hshipdate = form["hShipDate"] != null ? form["hShipDate"].ToString() : string.Empty;
//if (shipdate.Trim() == string.Empty && hshipdate.Trim() == string.Empty)
//{
// return Json(new { Result = "Error", Message = "Ship date cannot be empty" });
//}
string receiptdate = form["ReceiptDate"] != null ? form["ReceiptDate"].ToString() : string.Empty;
string hreceiptdate = form["hReceiptDate"] != null ? form["hReceiptDate"].ToString() : string.Empty;
//if (receiptdate.Trim() == string.Empty && hreceiptdate.Trim() == string.Empty)
//{
// return Json(new { Result = "Error", Message = "Receipt date cannot be empty" });
//}
string trackingnumber = form["TrackingNumber"] != null ? form["TrackingNumber"].ToString() : string.Empty;
//if (trackingnumber.Trim() == string.Empty)
//{
// return Json(new { Result = "Error", Message = "Tracking number cannot be empty" });
//}
string note = form["Note"] != null ? form["Note"].ToString() : string.Empty;
string productname = form["ProductName"] != null ? form["ProductName"].ToString() : string.Empty;
if (productname.Trim() == string.Empty)
{
return Json(new { Result = "Error", Message = "Product name cannot be empty" });
}
string qty = form["Qty"] != null ? form["Qty"].ToString() : string.Empty;
if (qty.Trim() == string.Empty)
{
return Json(new { Result = "Error", Message = "Qty cannot be empty" });
}
string dnote = form["dNote"] != null ? form["dNote"].ToString() : string.Empty;
try
{
List<OrderDetail> list = new List<OrderDetail>();
if (Session["OrderDetailList"] != null)
{
list = Session["OrderDetailList"] as List<OrderDetail>;
}
OrderDetail entity = new OrderDetail();
entity.ProductName = productname;
entity.Qty = Convert.ToInt32(qty);
entity.Note = dnote;
list.Add(entity);
for (int i = ; i < list.Count; i++)
{
list[i].ID = i + ;
}
Session["OrderDetailList"] = list;
return Json(new { Result = "OK", Message = "OK" });
}
catch (Exception ex)
{
return Json(new { Result = "Error", Message = ex.Message });
}
}
catch (Exception ex)
{
return Json(new { Result = "Error", Message = ex.Message });
}
}
public string RemoveOrderDetail(int id)
{
if (id != )
{
List<OrderDetail> list = new List<OrderDetail>();
if (Session["OrderDetailList"] != null)
{
list = Session["OrderDetailList"] as List<OrderDetail>;
var item = list.Where(w => w.ID == id).FirstOrDefault();
if (item != null)
{
list.Remove(item);
if (list.Count > )
{
for (int i = ; i < list.Count; i++)
{
list[i].ID = i + ;
}
Session["OrderDetailList"] = list;
}
else
{
Session["OrderDetailList"] = null;
}
}
}
}
else
{
Session["OrderDetailList"] = null;
}
return Session["OrderDetailList"] == null ? "empty" : "have";
}

Controller Code

作者:长毛象
本文版权归作者和博客园共有,个人学习成果,请多多指教,欢迎转载,请保留原文链接
 

Session版购物车+MVC局部刷新的更多相关文章

  1. MVC采用Jquery实现局部刷新

    该文纯粹属于个人学习,有不足之处请多多指教! 效果图: 单击Detail下面出现详细,效果如下: 为了使操作时两个不同的数据源相互干扰,使用局部视图刷新,代码如下: 首先介绍主页Index代码: @m ...

  2. MVC无刷新分页(即局部刷新,带搜索,页数选择,排序功能)

    我查看了很多网站,大部分评论分页都是局部刷新的,可大部分电商商品展示分页都是有刷新页面的,于是我便做了一个商品展示无刷新分页的例子.接下来我就将做一个模仿淘宝已买到的宝贝功能,不过我的是无刷新分页的. ...

  3. spring mvc + ajax上传文件,页面局部刷新

    1.点击上传按钮进行如下操作,通过表单名称以及input名称获取相应的值,对于上传的文件,使用.files来获取, 因为包含文件的上传,所以采用FormData的形式来进行数据交互,通过append将 ...

  4. iOS开发——UI进阶篇(四)tableView的全局刷新,局部刷新,左滑操作,左滑出现更多按钮,进入编辑模式,批量删除,自定义批量删除

    首先创建项目,在storyboard如下布局控件,设置好约束 然后创建cell模型类XMGWineCell数据模型类XMGWine创建UITableView,设置数据源协议,实现数据源方法懒加载数据这 ...

  5. MVC 局部加载页面的实例

    我们在做MVC 进行某一块的局部刷新,有的使用AJAX 请求,有的使用局部页: 下面我给大家推荐一种使用局部页面实现的这种方式: 第一步: 嵌套视图页 <div id="showAud ...

  6. MVC无刷新分页

    MVC无刷新分页(即局部刷新,带搜索,页数选择,排序功能)   我查看了很多网站,大部分评论分页都是局部刷新的,可大部分电商商品展示分页都是有刷新页面的,于是我便做了一个商品展示无刷新分页的例子.接下 ...

  7. iframe局部刷新的二种实现方法

    需求描述: 当页面有一部分是不变的或整个页面的图片很多时,可以考虑使用局部刷新,以提高整体的下载速度与用户体验.   1,iframe实现局部刷新的方法一 复制代码代码示例: <script t ...

  8. 安卓易学,爬坑不易—腾讯老司机的RecyclerView局部刷新爬坑之路

    前言 安卓开发者都知道,RecyclerView比ListView要灵活的多,但不可否认的里面的坑也同样埋了不少人.下面让我们看看腾讯开发工程师用实例讲解自己踩坑时的解决方案和心路历程. 话说有图有真 ...

  9. Ajax 异步局部刷新

    Ajax 异步局部刷新 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页 ...

随机推荐

  1. 通用功能类:改变WinForm窗体显示颜色

    一.显示窗体调用方法 protected override void OnLoad(EventArgs e)        {            MDIClientSupport.SetBevel ...

  2. 【Web缓存机制系列】2 – Web浏览器的缓存机制-(新鲜度 校验值)

    Web缓存的工作原理 所有的缓存都是基于一套规则来帮助他们决定什么时候使用缓存中的副本提供服务(假设有副本可用的情况下,未被销毁回收或者未被删除修改).这些规则有的在协议中有定义(如HTTP协议1.0 ...

  3. 【转载】浏览器缓存详解:expires cache-control last-modified

    https://www.cnblogs.com/caiyanhu/p/6931624.html 下面的内容展示了一个常见的 Response Headers,这些 Headers 要求客户端最多缓存 ...

  4. js 请求单个文件 并验证扩展名

    function suffix(file_name) { var three=file_name.split("."); ]; return last; } $('#btnSear ...

  5. jq 获取表单所有数据

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  6. js对cookie增删改查的封装

    /** * 获取cookie * @param name * @returns {*} */ function getCookie(name) { var cookieArr = document.c ...

  7. Jsp页面中常用的EL表达式

    首先引入标签 <%@ page language="java" contentType="text/html; charset=utf-8"  pageE ...

  8. PHP并发IO编程实践

    PHP相关扩展 Stream:PHP内核提供的socket封装 Sockets:对底层Socket API的封装 Libevent:对libevent库的封装 Event:基于Libevent更高级的 ...

  9. res对象json,redirect

    1.res.json() var express=require('express'); var app=express(); app.get('/',function(req,res){ //返回j ...

  10. kernel学习单

    lock (spin_lock, mutex, rw_mutex/spinlock) waitqueue, tasklet, softIRQ, hardIRQ basic struct (atomic ...