这是第四步点击保存将信息存入数据库中。

这个就简单了利用ajax将JSON字符串传到后台然后这里有个知识点就是将DataTable直接存入数据库中。代码如下:

一、界面获取数据JS代码:

//保存订单信息
function SaveToJson() {
//单位
var Company = document.getElementById("lblCompany").innerHTML;
//NO
var OrderNo = document.getElementById("lblNO").innerHTML;
//下单类型
var XDLX = document.getElementById("ddXDLX").value;
//转库凭证号
var ZKPZH = document.getElementById("txtZKPZH").value;
//日期
var OrderDate = document.getElementById("lblDate").innerHTML;
//代理商ID
var intDLSID = document.getElementById("hidDLSID").value;
strReturned = returned.toString() $.post("../DDGL/handler/SaveZCXDInfo.ashx", { strReturned: strReturned, Company: Company, OrderNo: OrderNo, XDLX: XDLX, ZKPZH: ZKPZH, OrderDate: OrderDate, intDLSID: intDLSID }, function(data) {
if (data == "True") {
alert("添加成功!")
} else {
alert("添加失败!")
}
window.location.href = "QueryDJLJList.aspx";
}); }

二、SaveZCXDInfo.ashx代码。

这个代码中我将JSON字符串转化成对象,在将对象转化成和数据库表结构一致的DataTable。代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using Model;
using BLL;
using System.Data; namespace WEB.DDGL.handler
{ public class QueryTotalMoney : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
//获取主表信息
int intDLSID = Convert.ToInt32(context.Request.Form["intDLSID"].ToString().Trim());
string strLJInfo = context.Request.Form["strReturned"].ToString();
string strCompany = context.Request.Form["Company"].ToString();
string strOrderNo = context.Request.Form["OrderNo"].ToString();
string strXDLX = context.Request.Form["XDLX"].ToString();
string strZKPZH = context.Request.Form["ZKPZH"].ToString();
string strOrderDate = context.Request.Form["OrderDate"].ToString();
//主表插入信息
MT_DLS_Order Order = new MT_DLS_Order();
Order.beginDate = strOrderDate;
Order.Company = strCompany;
Order.DLSID = intDLSID.ToString();
Order.XDLX = strXDLX;
Order.ZKPZH = strZKPZH;
Order.OrderCode = strOrderNo;
Order.SFQBFH = "否";
Order.IsCancel = "否";
Order.SFJRFee = "否";
//获取从表信息
/*
* 1、新建一个DataTable
* 2、把传来的Json字符串改成数组
* 3、把数组变成对象
* 4、把对象的值赋给DataTable
* */
//新建一个DataTable
DataTable dtLJInfo = new DataTable("T_DLS_Order_Cong");
dtLJInfo.TableName = "T_DLS_Order_Cong";
//添加DataTable数据项
dtLJInfo.Columns.Add(new DataColumn("ID", typeof(int)));
dtLJInfo.Columns.Add(new DataColumn("name", typeof(string)));
dtLJInfo.Columns.Add(new DataColumn("beginDate", typeof(string)));
dtLJInfo.Columns.Add(new DataColumn("OrderID", typeof(int)));
dtLJInfo.Columns.Add(new DataColumn("LJID", typeof(int)));
dtLJInfo.Columns.Add(new DataColumn("LJBM", typeof(string)));
dtLJInfo.Columns.Add(new DataColumn("LJMC", typeof(string)));
dtLJInfo.Columns.Add(new DataColumn("Numbers", typeof(int)));
dtLJInfo.Columns.Add(new DataColumn("Money", typeof(decimal)));
dtLJInfo.Columns.Add(new DataColumn("DJNo", typeof(string)));
dtLJInfo.Columns.Add(new DataColumn("SFFH", typeof(string)));
dtLJInfo.Columns.Add(new DataColumn("FHRNo", typeof(string)));
dtLJInfo.Columns.Add(new DataColumn("FHRName", typeof(string)));
dtLJInfo.Columns.Add(new DataColumn("FHDate", typeof(string)));
dtLJInfo.Columns.Add(new DataColumn("IsCancel", typeof(string)));
//把Json字符串改成数组
JArray jaLJInfo = (JArray)JsonConvert.DeserializeObject(strLJInfo);
if (strXDLX == "正常下单")
{
for (int i = 0; i < jaLJInfo.Count; i++)
{
JObject obj = (JObject)jaLJInfo[i];
DataRow drLJInfo = dtLJInfo.NewRow();
string strLJID = obj["LJID"].ToString().Trim();
string strNumbers = obj["SL"].ToString();
string strMoney = obj["Money"].ToString();
string strLJBM = obj["LJBM"].ToString();
string strLJMC = obj["LJMC"].ToString();
strLJID = strLJID.Replace("\"", "");
strNumbers = strNumbers.Replace("\"", "");
strMoney = strMoney.Replace("\"", "");
strLJBM = strLJBM.Replace("\"", "");
strLJMC = strLJMC.Replace("\"", "");
drLJInfo["LJID"] = Convert.ToInt32(strLJID);
drLJInfo["LJBM"] = strLJBM;
drLJInfo["LJMC"] = strLJMC;
drLJInfo["Numbers"] = Convert.ToInt32(strNumbers);
drLJInfo["Money"] = Convert.ToDecimal(strMoney);
drLJInfo["beginDate"] = strOrderDate;
drLJInfo["IsCancel"] = "否";
drLJInfo["SFFH"] = "否";
dtLJInfo.Rows.Add(drLJInfo);
}
}
else
{
for (int i = 0; i < jaLJInfo.Count; i++)
{
JObject obj = (JObject)jaLJInfo[i];
DataRow drLJInfo = dtLJInfo.NewRow();
string strLJID = obj["LJID"].ToString().Trim();
string strMoney = obj["Money"].ToString();
string strLJBM = obj["LJBM"].ToString();
string strLJMC = obj["LJMC"].ToString();
string strDJNo = obj["DJBH"].ToString(); strLJID = strLJID.Replace("\"", "");
strMoney = strMoney.Replace("\"", "");
strLJBM = strLJBM.Replace("\"", "");
strLJMC = strLJMC.Replace("\"", "");
strDJNo = strDJNo.Replace("\"", "");
drLJInfo["LJID"] = Convert.ToInt32(strLJID);
drLJInfo["LJBM"] = strLJBM;
drLJInfo["LJMC"] = strLJMC;
drLJInfo["Money"] = Convert.ToDecimal(strMoney);
drLJInfo["beginDate"] = strOrderDate;
drLJInfo["DJNo"] = strDJNo;
drLJInfo["SFFH"] = "否";
drLJInfo["IsCancel"] = "否";
dtLJInfo.Rows.Add(drLJInfo);
}
} BT_XDMgr XDMgr = new BT_XDMgr();
if (XDMgr.AddOrder(Order, dtLJInfo))
{
context.Response.Write("True"); }
else
{
context.Response.Write("False");
} context.Response.End();
} public bool IsReusable
{
get
{
return false;
}
}
}
}

三、BLL层代码。

    /// <summary>
/// 添加到数据库
/// </summary>
/// <param name="Order"></param>
/// <param name="dt"></param>
/// <returns></returns>
public bool AddOrder(MT_DLS_Order Order,DataTable dt)
{ DT_DLS_Order OrderDal = new DT_DLS_Order();
DT_DLS_Order_Cong OrderCongDal = new DT_DLS_Order_Cong();
DT_DLS_Order_LC OrderLCDal = new DT_DLS_Order_LC();
decimal TotalMoney=0;
//添加主单信息
int OrderID = OrderDal.Add(Order);
//添加订单ID在从表中
for (int i = 0; i < dt.Rows.Count; i++)
{
dt.Rows[i]["OrderID"] = OrderID;
TotalMoney = TotalMoney +Convert.ToDecimal( dt.Rows[i]["Money"].ToString().Trim());
}
//更新总金额
Order.ID = OrderID;
Order.OrderMoney = TotalMoney;
//判断是否更新成功
if (OrderDal.Update(Order))
{
//添加订单从表
//判断是否添加从表成功
if (OrderCongDal.AddOrderInfoByDataTable(dt))
{
//添加此订单的流程
//查询出流程ID
//查询所有的节点ID
int ZFGDLS = Convert.ToInt32(ConfigurationSettings.AppSettings["ZFGDLS"].ToString());
DataTable dtZFGDLSJD = new DataTable();
dtZFGDLSJD = OrderLCDal.QueryAllJD(ZFGDLS);
//判断流程中是否有节点
if (dtZFGDLSJD.Rows.Count > 0)
{
DataTable dtOrderLC = new DataTable();
dtOrderLC.TableName = "T_DLS_Order_LC";
dtOrderLC.Columns.Add(new DataColumn("ID", typeof(int)));
dtOrderLC.Columns.Add(new DataColumn("name", typeof(string)));
dtOrderLC.Columns.Add(new DataColumn("beginDate", typeof(string)));
dtOrderLC.Columns.Add(new DataColumn("OrderID", typeof(string)));
dtOrderLC.Columns.Add(new DataColumn("LCID", typeof(string)));
dtOrderLC.Columns.Add(new DataColumn("State", typeof(string)));
dtOrderLC.Columns.Add(new DataColumn("CZRNo", typeof(string)));
dtOrderLC.Columns.Add(new DataColumn("CZRName", typeof(string))); for (int i = 0; i < dtZFGDLSJD.Rows.Count; i++)
{
DataRow drOrderLCInfo = dtOrderLC.NewRow(); drOrderLCInfo["OrderID"] = Order.ID;
drOrderLCInfo["LCID"] = dtZFGDLSJD.Rows[i]["ID"].ToString().Trim(); if (i == 0)
{
drOrderLCInfo["State"] = "是";
drOrderLCInfo["CZRNo"] = Order.DLSID;
drOrderLCInfo["CZRName"] = Order.Company;
drOrderLCInfo["beginDate"] = Order.beginDate;
}
else
{
drOrderLCInfo["State"] = "否";
}
dtOrderLC.Rows.Add(drOrderLCInfo);
}
//判断添加流程是否成功
if (OrderLCDal.AddOrderLC(dtOrderLC))
{
return true;
}
else
{
return false;
} }
else
{
return false;
} }
else
{
return false;
} }
else
{
return false;
} }

四、D层中关键的代码。

将传回去的DataTable直接存到数据库中:

代码如下:

/// <summary>
/// 将datatable中的数据批量插入数据库
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static Boolean makeDatatableIntoDatabase(DataTable dt)
{
SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction);
sqlbulkcopy.DestinationTableName = dt.TableName;//数据库中的表名 try
{
sqlbulkcopy.WriteToServer(dt);
return true;
}
catch (Exception ex)
{
return false;
}
}



       这里值得注意的是:我们传过来的DataTable TableName要和数据库中表名一致,DataTable中的字段顺序,类型、名称要和数据库中的字段字段顺序,类型、名称一致才行。

五、效果图。

六、综述。

就这四步把整个功能一一展现出来了用到的知识点很多。从这个功能中我的体会就是实习完回去赶紧多做些这样的小Demo保存好工作的时候直接用不要等到工作了慢慢的研究。其实我们做项目都是一个个小Demo拼接出来的。所以多做Demo工作上遇到了开发效率就高了。

												

ASP.NET实现弹出框真分页将复选框选择的数据存到数据库中(四)的更多相关文章

  1. js做全选,用一个checkbox复选框做多个checkbox复选框的全选按钮,有一个复选框未被选择时,全选按钮的checked就为false

    用一个checkbox复选框做多个checkbox复选框的全选按钮,有一个复选框未被选择时,全选按钮的checked就为false,当所有checkbox都被选中时,全选按钮也被选中. 详解: 有两种 ...

  2. easyui的combobox将得到的数据设定为下拉框默认值和复选框设定默认值

    通过easyui做了一个表,表里是从数据库拿到的数据. 现在双击某一行,通过点击行的id取到这一行的所有数据,现在需要修改这些得到的数据, 其中部分数据是<select>这个选择的, 问题 ...

  3. 自动化测试基础篇--Selenium单选框(Radio)复选框(CheckBox)

    摘自:https://www.cnblogs.com/sanzangTst/p/7686602.html 一.什么是单选框.复选框? 二.单选框:radio 三.复选框:checkbox 四.判断是否 ...

  4. js自定义修改复选框单选框样式,清除复选框单选框默认样式

    之前做项目的时候,也遇到过需要按照设计稿把<input type="checkbox">和<input type="radio">的默认 ...

  5. JS基础入门篇(四)—this的使用,模拟单选框,选项卡和复选框

    1.this的使用 this js中的关键字 js内部已经定义好了,可以不声明 直接使用 this的指向问题 1. 在函数外部使用 this指向的是window 2. 在函数内部使用 有名函数 直接调 ...

  6. jquery easyui datagraid 对象显示的方法与datagraid、分页、复选框多选的数据显示

    ========================jsp==============================<table id="dg" fit="true& ...

  7. DOJO-dojox.grid.EnhancedGrid(带刷新函数,分页工具栏,复选框,行号等功能)

    转自:http://biancheng.dnbcw.info/javascript/395865.html dojo.require("dojox.grid.EnhancedGrid&quo ...

  8. gridcontrol复选框功能实现(超具体)

    博主这几天就准备离职了,以后不再做.Net开发.因此这应该是我写的最后一篇关于dev控件的博文.既然是最后一篇,那就写的具体一些.画个圆满的省略号...... 本文介绍gridcontrol怎样实现复 ...

  9. 在word中做复选框打对勾钩

    在word中做复选框打对勾钩 现在终于搞明白正确的操作方法 一.你在word里输入2610,按alt+X就能出 空checkbox 你在word里输入2611,按alt+X就能出 打了勾的checkb ...

随机推荐

  1. win8或win8.1修改注册表失败的原因

    win8 and win8.1 modify the registry need compiled to be different versions according to the os bits.

  2. OSGI.NET 学习笔记(一)

    1. 关于OSGI.NET 在介绍 OSGI.NET 前先介绍下OSGi, OSGI全称为Open Service Gateway Initiative,它一方面指由IBM.Oracle.BEA.SA ...

  3. php get传递数据

    url:?goods[]=924&goods[]=967&goods[]=993 <?php  if($_GET){            print_r($_GET);  } ...

  4. 华为OJ平台——查找组成一个偶数最接近的两个素数

    import java.util.Scanner; /** * 问题描述:任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况, * 本题目要求输出组成指定偶数的两个素数差值最小 ...

  5. SWFUpload使用指南

    SWFUpload是一个flash和js相结合而成的文件上传插件,其功能非常强大. SWFUpload的特点: 1.用flash进行上传,页面无刷新,且可自定义Flash按钮的样式; 2.可以在浏览器 ...

  6. 获取Spring的上下文环境ApplicationContext的方式

    摘自: http://blog.csdn.net/yang123111/article/details/32099329 获取Spring的上下文环境ApplicationContext的方式 Web ...

  7. 逻辑回归的分布式实现 [Logistic Regression / Machine Learning / Spark ]

    1- 问题提出 2- 逻辑回归 3- 理论推导 4- Python/Spark实现 # -*- coding: utf-8 -*- from pyspark import SparkContext f ...

  8. 基于s5pv210嵌入式系统busybox文件系统移植

    基于s5pv210嵌入式系统busybox文件系统移植 1.下载源码 busybox.net/downloads下载最新版的busybox源码,最新源码为1.21.1 2.解压源码文件 tar xvf ...

  9. [Cocos2d-x for WP8学习笔记] HelloWorld

    Cocos2d-x 是一个支持多平台的 2D 手机游戏引擎,使用 C++ 开发,基于OpenGL ES,基于Cocos2d-iphone,支持 WOPhone, iOS 4.1, Android 2. ...

  10. sql查看当前周数

    select datepart(wk,cast(getdate() as datetime))