Session版购物车+MVC局部刷新


<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局部刷新的更多相关文章
- MVC采用Jquery实现局部刷新
该文纯粹属于个人学习,有不足之处请多多指教! 效果图: 单击Detail下面出现详细,效果如下: 为了使操作时两个不同的数据源相互干扰,使用局部视图刷新,代码如下: 首先介绍主页Index代码: @m ...
- MVC无刷新分页(即局部刷新,带搜索,页数选择,排序功能)
我查看了很多网站,大部分评论分页都是局部刷新的,可大部分电商商品展示分页都是有刷新页面的,于是我便做了一个商品展示无刷新分页的例子.接下来我就将做一个模仿淘宝已买到的宝贝功能,不过我的是无刷新分页的. ...
- spring mvc + ajax上传文件,页面局部刷新
1.点击上传按钮进行如下操作,通过表单名称以及input名称获取相应的值,对于上传的文件,使用.files来获取, 因为包含文件的上传,所以采用FormData的形式来进行数据交互,通过append将 ...
- iOS开发——UI进阶篇(四)tableView的全局刷新,局部刷新,左滑操作,左滑出现更多按钮,进入编辑模式,批量删除,自定义批量删除
首先创建项目,在storyboard如下布局控件,设置好约束 然后创建cell模型类XMGWineCell数据模型类XMGWine创建UITableView,设置数据源协议,实现数据源方法懒加载数据这 ...
- MVC 局部加载页面的实例
我们在做MVC 进行某一块的局部刷新,有的使用AJAX 请求,有的使用局部页: 下面我给大家推荐一种使用局部页面实现的这种方式: 第一步: 嵌套视图页 <div id="showAud ...
- MVC无刷新分页
MVC无刷新分页(即局部刷新,带搜索,页数选择,排序功能) 我查看了很多网站,大部分评论分页都是局部刷新的,可大部分电商商品展示分页都是有刷新页面的,于是我便做了一个商品展示无刷新分页的例子.接下 ...
- iframe局部刷新的二种实现方法
需求描述: 当页面有一部分是不变的或整个页面的图片很多时,可以考虑使用局部刷新,以提高整体的下载速度与用户体验. 1,iframe实现局部刷新的方法一 复制代码代码示例: <script t ...
- 安卓易学,爬坑不易—腾讯老司机的RecyclerView局部刷新爬坑之路
前言 安卓开发者都知道,RecyclerView比ListView要灵活的多,但不可否认的里面的坑也同样埋了不少人.下面让我们看看腾讯开发工程师用实例讲解自己踩坑时的解决方案和心路历程. 话说有图有真 ...
- Ajax 异步局部刷新
Ajax 异步局部刷新 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页 ...
随机推荐
- ubuntu 16.04 安装QT问题
使用 sudo sh ./**.run 有错误: 增加 文件的可运行权限: sudo chmod +x Qt.run 直接运行: ./Qt.run 可完成安装
- ubuntu 14.04安装x11VNC
环境:Ubuntu 14.04, 1)安装x11vnc: sudo apt-get install x11vnc 2)设置VNC的连接密码: x11vnc -storepasswd Enter VNC ...
- java mongodb 使用MongoCollection,BasicDBObject 条件查询
废话不说,上代码 //链接数据库 MongoClient mongoClient = new MongoClient( "172.26.xxx.xxx" , 27017 ); Mo ...
- day004 与用户交互、格式化输出、基本运算符
目录 今天Python所学习的知识如下:①与用户的交互.格式化输出.基本运算符.以下整理汇总下所学习的知识点. 与用户的交互 input 注意事项: input函数接受的都是字符串 python2中的 ...
- Mysql [Err] 1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535.
对于越来越多的数据,数据库的容量越来越大,压缩也就越来越常见了.在我的实际工作中进行过多次压缩工作,也遇到多次问题,在此和大家分享一下. 首先,我们先说说怎么使用innodb的压缩. 第一,mysql ...
- Let's Encrypt,免费好用的 HTTPS 证书
转自: https://imququ.com/post/letsencrypt-certificate.html?hmsr=toutiao.io&utm_medium=toutiao.io ...
- webpack学习笔记(1)--webpack.config.js
主要的信息都是来自于下方所示的网站 https://webpack.docschina.org/configuration 从 webpack 4.0.0 版本开始,可以不用通过引入一个配置文件打包项 ...
- Hexo系列(四) NexT主题配置
Hexo 框架允许我们更换合适的主题,以便于构建不同风格的网站,这里介绍目前最常使用的一款主题之一 -- NexT 一.NexT 安装 在正式开始讲解 NexT 安装之前,我们必须明确以下几个概念: ...
- python爬虫09 | 上来,自己动 !这就是 selenium 的牛逼之处
作为一个男人 在最高光的时刻 就是说出那句 之后 还不会被人打 ... 虽然在现实生活中你无法这样 但是在这里 就让你体验一番 那种呼风唤雨的感觉 我们之前在爬取某些网站的时候 使用到了一些 pyth ...
- Q&A to prepare interview of HSBC
1.How do you keep updating lastest IT knowledge? 1).keep an eye on current project technology evetho ...