要怎么样才能实现两张表之间的全部数据转换呢,你可以给数据库的两张表给一列状态,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 = $("#searManagerID").val();
。。。。。。
var AreaNumber = $("#searAreaNumber").val();
if (BureauTowardsID == “” || BureauTowardsID == undefined) {
BureauTowardsID = 0;
} 。。。。。。
if (AreaNumber == undefined) {
AreaNumber = “”;
}
if (ManagerID == 0) {
layer.alert(“请选择数据后添加认领!”, { icon: 0, title: “提示” });
return; }
$.post(“控制器写的第二种查询方法名”, {
第二种就是上面写的查询数据为false或者null的数据的查询方法
ManagerID: ManagerID,
。。。。。。
AreaNumber: AreaNumber },
function (data) {
var datas = data.data;
var Yet = “”;
接着for循环一遍
for (var i = 0; i < datas.length; i++) {
Yet += datas[i].ConnectBoxID + “;”;}
Yet = Yet.substring(0, Yet.length - 1);
layer.confirm(“您确定要添加认领” + datas.length + “条数据吗?”, { icon: 3, title: “提示” }, function () {
$.post(“控制写的第一种添加方法名”, {
第一种添加方法就是上面说的把false改成true,数据为空的添加获取到的数据的方法
ConnectBoxID: Yet,
ManagerID: ManagerID
}, function (msg) {
刷新两张表格
第一个表格id.reload();
第二个表格id.reload();
layer.alert(msg, { icon: 0, title: “提示” }); }); });})}
然后下面演示一下全部添加的方法,如下图为最开始的样子,ManagerID为null,ClaimState为false
通过上面的下拉框获取到数据再点击全部添加,得到如下,ManagerID变成了获取到的数据的ID,ClaimState变成了true
下面再到视图层写全部移除的方法
function 自定义方法名() {
获取数据
var ManagerID = $("#searManagerID").val();
……
var AreaNumber = $("#searAreaNumber").val();
if (ManagerID == “” || ManagerID == undefined) {
ManagerID = 0; } ……
if (AreaNumber == undefined) {
AreaNumber = “”;}
$.post(“控制器写的第一种查询方法名”, {
就是查询某条数据!=null和状态true的方法
ManagerID: ManagerID,
AreaNumber: AreaNumber },
function (data) {
var datas = data.data;
var yet = “”;
然后这里for循环一遍凭借字符串
for (var i = 0; i < datas.length; i++) {
yet += datas[i].ConnectBoxID + “;”; }
yet = yet.substring(0, yet.length - 1);
layer.confirm(“您确定要删除认领” + datas.length + “条数据吗?”, { icon: 3, title: “提示” }, function () {
$.post(“控制器写的第二种移除方法名”, { ConnectBoxID: yet }, function (msg) {
就是上面控制器说的把数据删除变成null,true变成false的方法
刷新两张表格
第一个表格id.reload();
第二个表格id.reload();
layer.alert(msg, { icon: 0, title: “提示” }); });}); }) }
这样全部移除就写完了,下面演示一遍,点击全部删除得到如下,数据库所有数据的ManagerID变成了null,所有的ClaiState变成false