首先查询出主表的数据,再用session创建一个附表,要判断session里面是否有表了,没有就创建新的实例化的表,再把想要的数据从主表添加到附表,如图
从主表选中需要的数据添加到附表
实现功能代码如下,在控制器这边用session创建附表
//添加房间,房间附表
public ActionResult SelectSessionGuesRooms(string GuesRoomID)
{ List<GuesRooms> sessionGuesRooms = new List<GuesRooms>();//创建新的列表
//获取sessionz中的附件表
//下面就是判断session里面是否有列表了,有就用那个列表,没有就用上面新创建的。
if (Session["sessionGuesRooms"] != null)
{
//判断有没有值
sessionGuesRooms = Session["sessionGuesRooms"] as List<GuesRooms>;
}
if (!string.IsNullOrEmpty(GuesRoomID))
{
string[] GuesRoomIDs = GuesRoomID.Split(';'); //分割id
foreach(string GuesRoomId in GuesRoomIDs)//遍历循环每一条数据
{
int GuesRoomIds = Convert.ToInt32(GuesRoomId);
List<GuesRooms> listGuesRooms =(from tbGuesRoom in myEntities.S_GuestRoom
join tbRoomCategory in myEntities.S_RoomCategory on tbGuesRoom.RoomCategoryID equals tbRoomCategory.RoomCategoryID
where tbGuesRoom.GuestRoomID == GuesRoomIds
orderbytbGuesRoom.RoomNumber//排序
select new GuesRooms
{
GuestRoomID=tbGuesRoom.GuestRoomID,
RoomCategoryID=tbRoomCategory.RoomCategoryID,
RoomNumber=tbGuesRoom.RoomNumber,
Abbreviation=tbRoomCategory.Abbreviation,
DisperseGuestPrice= tbRoomCategory.DisperseGuestPrice,
Status=tbGuesRoom.Status
}).ToList();
if (listGuesRooms.Count > 0)
{
foreach (var listd in listGuesRooms) //遍历循环每一条数据
{
GuesRooms data = new GuesRooms();
data.GuestRoomID = listd.GuestRoomID;
data.RoomNumber = listd.RoomNumber;
data.Abbreviation = listd.Abbreviation;
data.DisperseGuestPrice = listd.DisperseGuestPrice;
data.Status = listd.Status;
if (sessionGuesRooms != null)//列表不为空
{ //sesssion 进行分页 最大索引值
int varlinq = (from tbGuesRoom in sessionGuesRooms
where tbGuesRoom.GuestRoomID == GuesRoomIds
select tbGuesRoom).Count();
if(varlinq == 0)
{ sessionGuesRooms.Add(data);
//把行数据放到session里
Session["sessionGuesRooms"] =
sessionGuesRooms;
}
} else
{ sessionGuesRooms.Add(data);
Session["sessionGuesRooms"] = sessionGuesRooms;
}
}
}
}
}
var intTotalRow = sessionGuesRooms.Count();//获取总行数
List<GuesRooms> list = sessionGuesRooms
.OrderByDescending(m => m.GuestRoomID)
.ToList();
//调用分页封装类
LayuiTableData<GuesRooms> layuiTableData = new LayuiTableData<GuesRooms>();
layuiTableData.count = intTotalRow;//行总数
layuiTableData.data = list;//具体显示数据
return Json(layuiTableData, JsonRequestBehavior.AllowGet);
}
再到视图进行以下代码,就这样把想要的数据保存到sesssion里面了。
//2.2 添加点击事件
$("#TianJia").click(function () {
//获取选中行
var checkStatus = layuiTable.checkStatus('tabgestRoom');
//判断是否选中数据
if (checkStatus.data.length > 0) {
var GuestRoomIDs = "";
for (var i = 0; i < checkStatus.data.length; i++) { //循环
//拼接ID
GuestRoomIDs += checkStatus.data[i].GuestRoomID + ';';
}
GuestRoomIDs = GuestRoomIDs.substring(0, GuestRoomIDs.length - 1);
tabGuesRooms.reload({
url: '/KfFroom/OrderForm/SelectSessionGuesRooms', //数据接口
where: { GuesRoomID: GuestRoomIDs }, //设定异步数据接口的额外参数
}
else {
layer.alert("请选选择需要添加的房间", { icon: 0, title: "提示", skin: "layui-layer-molv" });
}
});