要怎么样才能实现两张表之间的数据转换呢,你可以给数据库的两张表给一列状态,true和false,也可以判断某列数据,看他是否为空
首先,就要在你的视图层上放置两张表,然后声明两张表的表格ID和layuiTable,然后加载初始化两张表,如下图所示
然后分别监听两张表的行单击事件,如下图所示
然后就可以去控制器查询两张表的数据了
public ActionResult 查询方法(LayuiTablePage layuiTablePage,参数)
{查询到这张表的数据,后面就是根据你的参数连表查询
List linqs = (from tbClaiemd in myModel.B_ConnectBox
join tbManger in myModel.S_Manager on tbClaiemd.ManagerID equals tbManger.ManagerID
。。。。。。
然后这里,如果你给的表的状态,那么你就可以通过where查询这列数据状态为true或者false的数据,如果是是否为空,那么你也可以让他这样查询(where tbClaiemd.ClaimState == null,另外一种查询就写where tbClaiemd.ClaimState != null。又或者是where tbClaiemd.ClaimState == true,那么另外一张表的查询方法就是写where tbClaiemd.ClaimState == false)就是等于的意思,!=就是不等于的意思。一张表的查询的数据为true或者!=null,另外一张表的数据就是false或者
select new ConnectBoxVo{
。。。。。。
}).ToList();
然后这里条件筛选 Lambda表达式 运算符=>,左边是参数(如果有),右边是表达式或者语句
if (EquipmentID > 0)
{ linqs = linqs.Where(m => m.EquipmentID == EquipmentID).ToList();}
。。。。。。
if (!string.IsNullOrEmpty(AreaNumber))
{ linqs = linqs.Where(m => m.AreaNumber.Contains(AreaNumber)).ToList();}
LayuiTableData layuiTableData = new LayuiTableData
{ count=1,
data= linqs };
return Json(layuiTableData, JsonRequestBehavior.AllowGet); }
接着再到下面写数据转换的方法,起始就相当于修改和删除数据库表里面的部分数据,如下
public ActionResult 自定义方法名(string ConnectBoxID,int ManagerID)
{ string strMsg = “failed”;
int countSuccessDel = 0;//记录成功的数据条数
int countFailedDel = 0;//记录失败的数据条数
if (!string.IsNullOrEmpty(ConnectBoxID))
{//对拼接好的id进行分割
string[] ConnectBoxIDs = ConnectBoxID.Split(’;’);
foreach (string connectBoxID in ConnectBoxIDs)
{ try
{//将string类型的数据转化为int
int ConnectBoxId = Convert.ToInt32(connectBoxID);
var dbClaiemd = (from tbClaiemd in myModel.B_ConnectBox
where tbClaiemd.ConnectBoxID == ConnectBoxId
select tbClaiemd).Single();
然后这里就是,让数据里的某条数据,改成true或者false(dbClaiemd.ClaimState = true;
。另外一种就是dbClaiemd.ClaimState = false;)又或者给他添加或者删除数据让他是否为空(dbClaiemd.ManagerID =null;另外一种就是dbClaiemd.ManagerID !=null;)
myModel.Entry(dbClaiemd).State = EntityState.Modified;
myModel.SaveChanges();
countSuccessDel++; }
catch (Exception)
{countFailedDel++;}
}判断语句} else
{判断语句}
return Json(strMsg, JsonRequestBehavior.AllowGet); }
然后再到视图层写方法,第一种如下
function 方法名() {
这里可以通过声明一个变量绑定下拉框或者文本框来给数据库添加单条数据
var ManagerID = $("#下拉框或者文本框id ").val();
var checkStatus = layuiTable.checkStatus(“表格id”);
如果获取的数据等于零就提醒用户获取数据后执行
if (ManagerID == 0) {
layer.alert(“请选择数据后添加认领!”, { icon: 0, title: “提示” });
return; }
if (checkStatus.data.length > 0) {
var Yet = “”;
然后这里for循环一遍拼接字符串
for (var i = 0; i < checkStatus.data.length; i++) {
Yet += checkStatus.data[i].ConnectBoxID + “;”; }
Yet = Yet.substring(0, Yet.length - 1);
layer.confirm(“您确定要添加认领” + checkStatus.data.length + “条数据吗?”, { icon: 3, title: “提示” }, function () {
$.post(“控制器写的第一种方法名”, {
ConnectBoxID: Yet,
ManagerID: ManagerID
}, function (msg) {
刷新两张表
第一个表格id.reload();
第二个表格id.reload();
layer.alert(msg, { icon: 0, title: “提示” }); }); });
} else { layer.alert(“请选择需要添加认领的数据”);} }
然后再写第二种方法,如下
function scrl() {
var checkStatus = layuiTable.checkStatus(“第二个表格id”);
if (checkStatus.data.length > 0) {
var Yet = “”;for循环一遍拼接字符串
for (var i = 0; i < checkStatus.data.length; i++) {
Yet += checkStatus.data[i].ConnectBoxID + “;”; }
Yet = Yet.substring(0, Yet.length - 1);
layer.confirm(“您确定要删除认领” + checkStatus.data.length + “条数据吗?”, { icon: 3, title: “提示” }, function () {
$.post(“Scrl”, { ConnectBoxID: Yet }, function (msg) {
刷新两张表格
第一个表格id.reload();
第二个表格id.reload();
layer.alert(msg, { icon: 0, title: “提示” }); }); });
} else {layer.alert(“请选择需要删除认领的数据”);}
这样我们就写完了,下面我们来演示一遍,如下图,最开始视图层和数据库是这样的ManagerID为空,ClaimState为false
如上图通过下拉框绑定数据,再选在右边的单条或者多条数据,点击添加认领他就会把数据库表里面的false变成true ,还有那条为空的数据给他添加上上面下拉框获取到的数据,得到如下图
你再选择数据点击删除认领就可以把选择到的数据的ManagerID变成null,true变成false
两张表之间的单条和多条数据转换
最新推荐文章于 2020-08-26 23:33:22 发布