关于将一个表格数据存入Session中然后提取显示到另一个表格中
一、存储数据到Session
- 获取当前表格选中的数据的方法
1.1多条数据使用layui中的获取选中行数据的方法checkStatus();
var checkStatus = table.checkStatus('BrowseTable');
1.2单条点击选中 row 单击 rowDouble 双击 方法相同
table.on('row(ReceiptsTable)', function (obj) {
var data = obj.data;
console.log(data);
})
- 将获取的数据提交方法有多种这里采用post请求
$.post("/DailyRoutine/Receptionist/ receptionSession", { datas: data }, function (data) {})
post(a,b,c) a=url b=键:值(键=控制器接收值得参数名 值=要传递到控制器的数据) c=回调方法 当请求提价后才执行的方法;
- 控制将传递过来的数整理并添加到Session中
3.1 声明参数接收数据 注意:页面传递的数据是一条或多条完整的数据所以要用list接收数据
public ActionResult receptionSession(List<receptionCargo> datas) {}
receptionCargo是一个实体类 里面定义了需要用到的所字段
3.2实例化对象列表
List<receptionCargo> listreceptionCargo = new List<receptionCargo>();
3.3判断原有Session中有无数据,有数据就不可以直接赋值否则会覆盖掉原有数据,
if (Session["selectCommodity"] != null)
{
listreceptionCargo = Session["selectCommodity"] as List<receptionCargo>;
}
3.4实例化实体类
receptionCargo ReceptionCargo = new receptionCargo();
3.5 循环赋值
for (var i = 0; i < datas.Count(); i++)
{
//页面的传递的字段一定要对应实体类的字段,否则值会为NULL
ReceptionCargo.Color = datas[i].Color;//商品颜色
ReceptionCargo.CommodityCode = datas[i].CommodityCode;//商品编码
ReceptionCargo.id = datas[i].id;//商品id
ReceptionCargo.CommodityName = datas[i].CommodityName;//商品名称
ReceptionCargo.Discount = datas[i].Discount;//销售折扣
ReceptionCargo.Size = datas[i].Size;//尺码-名
ReceptionCargo.TagPrice = datas[i].TagPrice;//吊牌价
ReceptionCargo.Unit = datas[i].Unit;//单位-名
//将数据都放入列表对象
listreceptionCargo.Add(datas[i]);
}
3.6将列表对象保存到Session中
Session["selectCommodity"] = listreceptionCargo;
存储完成了接下来是提取斌返回到表格
二、提取Session数据并返回导表格中
1.因为提取数据不需要获取数据所以直接重载表格 最好写在提交方法的回调方法中
table.reload('SellTable', {
url: '/DailyRoutine/Receptionist/receptionDetail'
});
2.控制器调用分页
public ActionResult receptionDetail(LayuiTablePage layuiTablePage){}
2.1 判断session是否为空,不为空将类表对象的结构改成session相同结构
if (Session["selectCommodity"] != null)
{
listResult = Session["selectCommodity"] as List<receptionCargo>;
}
2.2 用强类型列表 声明变量并赋值为,对象列表的根据id升序排序并分页后创建出来的列表
List<receptionCargo> listCommdity = listResult
.OrderBy(p => p.id)
.Skip(layuiTablePage.GetStartIndex())
.Take(layuiTablePage.limit)
.ToList();
2.3实例化实体类用于返回数据
LayuiTableData<receptionCargo> layuiTableData = new LayuiTableData<receptionCargo>();
layuiTableData.count = listResult.Count;
layuiTableData.data = listCommdity;
2.4将数据返回
return Json(layuiTableData, JsonRequestBehavior.AllowGet);
添加前 | 添加后 |