如图所示,在点击了上面的父表之后,下面的子表就会根据上面父表的统计数据来查询出单条的详细数据!
因为父表的数据是根据子表的数据查询出来的,所以在对父表统计的时候可以把查询出来的子表的数据的ID拼接在一起,赋值给父表的某个字段一起返回回页面!
for (int k = 0; k < list4.Count(); k++)
{
linqes[i].AccessDereID += list4[k].dbAcesDeRe.TemporaryMarID.ToString() + ';';
}
Layui表格监听父表点击事件,获取到拼接的ID的字符串。重载子表,把得到的字符串传过去
layuiTable.on('row(DaySellListStatistics)', function (obj) {
if (obj.data.AccessDereID == null || obj.data.AccessDereID == "") {
FundsNum = null;
}
else
{
FundsNum = obj.data.AccessDereID + ';';
FundsNum = FundsNum.substring(0, FundsNum.length - 2);
}
daySellListdetail.reload({
url: "/StatisticsManagement/AccessStatistics/SelecSmallTable",
where: { FundsNum: FundsNum}
})
})
分割字符串ID,通过ID查询出来数据,添加到一个对象列表list3中,这样list3中的数据就是我们需要的数据的其中一部分。
再通过for循环得到list3中的每一条数据,再通过得到的数据的ID去另外一张表中查询出来其他的我需要的数据,把我需要的放入通过一个实体类来保存我所需要的数据,注意里面实体类里面的字段要与页面中表格的field值对应(MarketVo CommDeRe = new MarketVo())
List dbMarket = new List();
string[] AcesId = FundsNum.Split(';');
var list1 = myModels.B_AccessDeRe.ToList();
foreach (var item in AcesId)
{
var ID = Convert.ToInt32(item);
var list2 = list1.Where(S => S.TemporaryMarID == ID).Single();
list3.Add(list2);
}
for (int i = 0; i < list3.Count(); i++)
{
var DateNum = list3[i].CommDeRelsutID;
var ListComDeRe = listResult.Where(S => S.CommDeRelsutID == DateNum).Single();
MarketVo CommDeRe = new MarketVo()
{
CommCoding = list3[i].CommCoding.Trim(),
Catelist = ListComDeRe.Catelist.Trim(),
FundsNum = ListComDeRe.FundsNum.Trim(),
Color = ListComDeRe.ColorName.Trim(),
Size = ListComDeRe.Size.Trim(),
UnitName = ListComDeRe.UnitName.Trim(),
};
dbMarket.Add(CommDeRe);
}
把赋完值之后的数据添加到对象列表dbMarket中去!
List<MarketVo> listResult = new List<MarketVo>();
if (Session["listResult"]!=null)
{
listResult = Session["listResult"] as List<MarketVo>;
}
else
{
listResult = (………查询数据的方法………)
Session["listResult"] = listResult;
}
Session操作,当重复查询的时候可以提高效率,不需要重复去数据库中查询数据!