增、删、查、改、导入、导出

渲 染
//存放 layui 相关模块
var layuiTable, laydate, layer; var 先声明 layui 相关模块用于方便调用
//pnr 表格
var tabPNR;
$(document).ready(function () {
//加载 layui 组件 layui.use 是用来加载 layui 要用的组件模块
layui.use([‘layer’, ‘table’, ‘laydate’], function () {
layuiTable = layui.table;
laydate = layui.laydate;
layer = layui.layer;
//初始化日期控件
laydate.render({
elem: ‘#searchFlightDate’,
type: ‘date’,
btns: [‘now’, ‘confirm’],
trigger: ‘click’ //解决 Laydate 一闪而过的问题
});
//渲染表格 render 是用来渲染你
tabPNR = layuiTable.render({
elem: ‘#tabPNR’, //id
url:’@Url.Content("~/PNR/PNRQueryController/SelectPNR")’, //路径
cols: [[ //表头 titlebR 标题名称 type 类型可单、复选 align 左中右
field 表格数据内容 templet 自定义想设计调用进去
{ title: ‘序号’, type: ‘numbers’, align: ‘center’ },
{ title: ‘旅客姓名’, align: ‘center’, templet: customPassengers },
{ title: ‘PNR’, field: ‘PNRNo’, align: ‘center’ },
{ title: ‘航班号’, field: ‘flightCode’, align: ‘center’ },
{ title: ‘订座情况’, field: ‘strPNRStatus’, align: ‘center’ },
//{ title: ‘航班日期’, field: ‘flightDate’, align: ‘center’, width: 160 },
{ title: ‘航班日期’, templet: customDate, align: ‘center’, width: 160 },
{ title: ‘操作’, align: ‘center’, templet: customOperate ,width:160},
]],
page: true
});
});
});
//表格自定义列–操作列 templet 自定义想设计调用进去
function customOperate(rowData) {
左边三行内容,不能发布到网上平
台,学院归档使用。
正文中所有图片不能用黑色背景
return ‘查看/修改’;
}
查 询
///
/// 1.0 查询 PNR 数据 ///绿色是注销,注销后没有代码作用只供观看
///
/// 分页
/// PNRNo
/// 旅客姓名
/// 航班号
/// 航班日期
/// public 公有 private 私有 ActionResult 超做方法
SelectPNR 名称用于调用 LayuiTablePage 表格 LayuiTablePage 表格名字 string 字符串类型 PNRNo 名字
public ActionResult SelectPNR(LayuiTablePage layuiTablePage, string PNRNo, string passengerName,
string flightCode, string flightDate)
{
//连表查询出所有的 PNR 数据 #region #endregion 一对展开收缩功能,旁边可以带备注
#region 连表查询出所有的 PNR 数据 from in 查询 join 链表 on 继续 equals 等于
var tempPNRlinq = from tbPNR in myModel.B_PNR
join tbPNRPassenger in myModel.B_PNRPassenger on tbPNR.PNRID equals
tbPNRPassenger.PNRID
join tbPNRSegment in myModel.B_PNRSegment on tbPNR.PNRID equals
tbPNRSegment.PNRID
join tbFlight in myModel.S_Flight on tbPNRSegment.flightID equals
tbFlight.flightID
select new
{ =是负极,说明左边有右边功能
PNRID = tbPNR.PNRID,//PNRID
PNRNo = tbPNR.PNRNo,//PNR 编号
passengerName = tbPNRPassenger.passengerName,
flightCode = tbFlight.flightCode,//航班号
flightDate = tbFlight.flightDate,//航班日期
PNRStatus = tbPNR.PNRStatus//PNR 状态
};
#endregion
//查询有多少条数据,查询数据总条数
int intTotalRow = listUser.Count();
}新 增
//===3、创建 PNR 航段信息并添加到 pnrSegments 中
变量名字.add 添加 new 新建
pnrSegments.Add(new B_PNRSegment
{
PNRID = PNRID,//PNRID
segmentNo = (i + 1), //航段号
flightID = sFlightCabin.flightID, //航班 ID
cabinTypeID = sFlightCabin.cabinTypeID, //舱位类型 ID
flightCabinID = sFlightCabin.flightCabinID, //航班舱位 ID
bookSeatNum = passengerNum, //订座数量
bookSeatInfo = 1, //订座情况: 1:已预订座位;,2:部分出票,3:全部出票,0:
取消订座
invalid = true //设置航段有效
});
修 改
//开启事务
//开启事务,多表使用建议开启
using (TransactionScope scope = new TransactionScope())
{
try 捕捉错误
{
//遍历修改数据 (双循环) foreach 循环 PNRPassenger 表格 dbPassenger 名字
foreach (B_PNRPassenger dbPassenger in dbPassengers) 要循环的对象
{
foreach (B_PNRPassenger passenger in passengers)
{ if 判断
if (dbPassenger.PNRPassengerID == passenger.PNRPassengerID)
{
//如果页面传递的(修改后的名称为空),结束循环,返回,提示用户,
if (string.IsNullOrEmpty(passenger.passengerName))
{
msg.Text = string.Format(“第{0}位旅客的姓名未输入,请检查。”,
dbPassenger.passengerNo);
return Json(msg, JsonRequestBehavior.AllowGet);
}
//更新 dbPassengers 中的旅客名称
dbPassenger.passengerName = passenger.passengerName.Trim();
Entry 更新登记占用 //将修改后的 PNR 旅客信息保存到数据库
myModel.Entry(dbPassenger).State =
System.Data.Entity.EntityState.Modified;
myModel.SaveChanges();
}
}
}
//所有旅客修改完成后提交事务
scope.Complete();
//返回成功
msg.State = true;
msg.Text = “修改成功”;
}
catch (Exception e)
{
Console.WriteLine(e);
msg.Text = “修改成功”;
}
}
删 除
//====删除旅客
//查询出要删除的旅客
List<B_PNRPassenger> deletePassengers = (from tbPNRPassenger in myModel.B_PNRPassenger 确定某元素在 list 里面 where PNRPassengerIDs.Contains(tbPNRPassenger.PNRPassengerID)
Contains select tbPNRPassenger).ToList();
//删除数据
myModel.B_PNRPassenger.RemoveRange(deletePassengers);
myModel.SaveChanges();保存
导 出
在这里插入图片描述

Excel 的数据处理功能非常强大,我们经常会从数据库或 DataTable 等数据源导入到 Excel 文档来进行数据分析或运
算 , 有 时 候 又 需 要 将 Excel 文 档 中 的 数 据 导 出 到 数 据 库 或 者 Datatable 来 读 取 数 据 。
//==1-检查模板文件是否存在
// Server.MapPath 将相对的路径转为实际的物理路径
Server 获取提供 Web 请求处理期间使用的方法的 HttpServerUtilityBase 对象。
MapPath 在派生类中重写时,返回与 Web 服务器上的指定虚拟路径相对应的物理文件路径。
二 string templatePath = Server.MapPath("~/Document/ARDataTemplate.xls");
//判断模板是否存在 Exists 确定文件是否存在
if (!System.IO.File.Exists(templatePath))
{
//如果不存在,就返回失败信息
return Content(“导出失败,请联系网站管理员”);
}
//==2-使用 NPOI 打开模板 Excel
//=2.1-使用文件打开模板文件 Open 打开指定路径上的 System.IO.FileStream,具有
读/写访问权限 (第一个你要打开的路径,第二个指定超做系统打开的文件,三打开文件)
FileStream templateStream = System.IO.File.Open(templatePath, FileMode.Open);
三 //=2.2-使用 NPOI 打开模板 Excel 得到一个工作簿
NPOI.HSSF.UserModel.HSSFWorkbook excelBookTemplate = new
NPOI.HSSF.UserModel.HSSFWorkbook(templateStream);
//==3-打开模板所在第一个工作表
NPOI.SS.UserModel.ISheet sheet = excelBookTemplate.GetSheetAt(0);
//构建单元格样式
NPOI.SS.UserModel.ICellStyle style = excelBookTemplate.CreateCellStyle();
//把 Excel 转化为流,输出
四 MemoryStream BookStream = new MemoryStream();//定义内存流
excelBookTemplate.Write(BookStream);//将工作薄写入内存流 Write 打开文件写入
BookStream.Seek(0, SeekOrigin.Begin);//输出之前调用 Seek(偏移量,游标位置)方法:获取文件
流的长度 Seek 将当前流中的位置设置为指定值。
/*参数:File(fileStream 要发送到响应的流,
contentType 内容类型(MIME 类型),
fileDownloadName 浏览器中显示的文件下载对
话框内要使用的文件名。) */
return File(BookStream, “application/vnd.ms-excel”, fileName); 一 导入、导出
在这里插入图片描述

导 入
public ActionResult DownImportTemplate()
二 { 指定虚拟路径相对应的物理模板文件路径,检查 Excel、工作簿和工作表是否存在
//返回与 Web 服务器上的指定虚拟路径相对应的物理文件路径。
string filePath = Server.MapPath("~/Document/用户导入模板.xls");
//判断模板文件是否存在
if (System.IO.File.Exists(filePath))
{Path 对包含文件或目录路径信息的 System.String 实例执行操作。这些操作是以跨平
台的方式执行的 声明字符串和实例化通用对话框
//获取文件的名称 GetFileName 返回指定路径字符串的文件名和扩展名。
string strfileName = Path.GetFileName(filePath);
return File(new FileStream(filePath, FileMode.Open), “application/octet-stream”,
strfileName);
}else
{ //使用字符串创建一个内容结果对象。
return Content(“模板文件不存在,请联系系统运维人员。”);
} }
把文件转换为二进制数组,二进制数组转成内存流,利用 NPOI 把内存流中的数据读取成 Excel,判
断工作表中是否有数据,然后把 Excel 保存到临时表格里面(DataTable 中),获取模板文件格式,
使用NPOI读取数据,将数据循环添加标题行中各个单元格的值,导入到工作表的单元格。
图片上传
//====判断是否上传了新图片
if (userPicture != null && userPicture.ContentLength > 0)
{
//上传了图片
//==保存新上传的文件
//文件类型 FileName 在派生类中重写时,获取客户端上文件的完全限定名。
string imgExtension = Path.GetExtension(userPicture.FileName);
//文件名称
string imgFileName = DateTime.Now.ToUniversalTime().ToString(“yyyyMMddHHmmssffff”) + “_” + Guid.NewGuid()

  • imgExtension;
    //保存文件的路径
    string imgFilePath = Server.MapPath("~/Document/userPicture/") + imgFileName;
    //保存文件
    userPicture.SaveAs(imgFilePath);
    //将文件名称设置到用户中
    user.picture = imgFileName;
    //==判断之前是否存在图片,存在就先删除
    if (!string.IsNullOrEmpty(oldPicture))
    {
    //以前存在图片 需要删除
    string oldPiciturnPath = Server.MapPath("~/Document/userPicture/") + oldPicture;
    if (System.IO.File.Exists(oldPiciturnPath))
    {
    System.IO.File.Delete(oldPiciturnPath);
    } } }
    { // 为 上 传 图 片 不 做 任 何 处 理 把 数 据 库 中 的 图 片 直 接 设 置 到 user 对 象
    user.picture = oldPicture; }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值