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

时间:2022-09-03 16:12:50

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

这个就简单了利用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中的字段顺序,类型、名称要和数据库中的字段字段顺序,类型、名称一致才行。

五、效果图。

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

六、综述。

就这四步把整个功能一一展现出来了用到的知识点很多。从这个功能中我的体会就是实习完回去赶紧多做些这样的小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&period;grid&period;EnhancedGrid&lpar;带刷新函数&comma;分页工具栏&comma;复选框&comma;行号等功能&rpar;

    转自: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. Linux安装卸载Mysql数据库

    关于mysql数据库在Linux下的应用一直以来都是我认为比较棘手的,这次通过搭建Linux学习环境顺便研究和学习Mysql数据库在Linux下安装和卸载. 1.先来看看卸载吧,如下图所示: 以上的命 ...

  2. &lpar;App&period;Current&period;RootVisual as PhoneApplicationFrame&rpar;&period;Navigate&lpar;new Uri&lpar;&quot&semi;&sol;MainPage&period;xaml&quot&semi;&comma; UriKind&period;Relative&rpar;&rpar;&semi;

    (App.Current.RootVisual as PhoneApplicationFrame).Navigate(new Uri("/MainPage.xaml", UriKi ...

  3. scrollview背景头部拉伸

    a - (void)viewDidLoad { [super viewDidLoad]; self.tableView.contentInset = UIEdgeInsetsMake(kImageOr ...

  4. ASP&period;NET MVC图片管理&lpar;上传,预览与显示&rpar;

    先看看效果(下面gif动画制作有点大,5.71MB): 题外话:上面选择图片来源于Insus.NET的新浪微博:http://weibo.com/104325017 也是昨晚(2015-07-03)I ...

  5. jquery学习笔记----ajax使用

    一.load() 加载页面数据 load(url,[data],[callback]) url:加载的页面地址,[data]传送的数据,[callback]加载完成时回调函数. 设计一个load.ht ...

  6. 2013 吉林通化邀请赛 Tutor 有点坑的水题

    计算12个数的和的平均数.四舍五入,不能有后导0. 我的做法是,将答案算出后,乘以1000,然后看个位是否大于等于5,判断是否要进位…… #include<iostream> #inclu ...

  7. Editplus配置java运行环境以及其他需求的简单设置

    java配置 首先,打开"工具"(tools)选项,选择"配置自定义工具组"(英文版 是倒数第二个)然后按照上面第二幅图片来配置javac环境,其中命令一栏是j ...

  8. SpringtMVC中配置 &lt&semi;mvc&colon;annotation-driven&sol;&gt&semi; 与 &lt&semi;mvc&colon;default-servlet-handler&sol;&gt&semi; 源码解析

    上一篇有提到,当有.无这两个标签时,SpringtMVC 底层所采用的  HandlerMapping 以及 HandlerAdapter 是不一样的.现在就来进行源码调试,揭开 SpringtMVC ...

  9. Docker(五)如何构建Dockerfile

    摘自 https://mp.weixin.qq.com/s/_hq9dPe6390htN8BTkoQeQ 一.Dockerfile的指令集 由于Dockerfile中所有的命令都是以下格式:INSTR ...

  10. CodeIgniter 2&period;x和3&period;x修改默认控制器问题解答

    首先明确一点,CodeIgniter框架的2.x和3.x版本中修改默认控制器是有一点区别的 但相同的操作都是修改application/config/routes.php $route['defaul ...