前端传来的数据 :
[
{
"id":"005K",
"label":"江苏省",
"children":[
{
"id":"005L",
"label":"淮安市",
"children":[
{
"id":"005M",
"label":"淮阴区",
"children":[
{
"id":"005N",
"label":"码头镇",
"children":[
]
},
{
"id":"005O",
"label":"王营镇",
"children":[
]
}
]
},
{
"id":"005P",
"label":"清江浦区",
"children":[
{
"id":"005Q",
"label":"和平镇",
"children":[
]
},
{
"id":"005R",
"label":"武墩镇",
"children":[
]
}
]
}
]
},
{
"id":"005S",
"label":"苏州市",
"children":[
{
"id":"005T",
"label":"姑苏区",
"children":[
]
}
]
},
{
"id":"005U",
"label":"南通市",
"children":[
]
},
{
"id":"005V",
"label":"新增节点",
"children":[
]
}
]
},
{
"id":"005W",
"label":"上海市",
"children":[
{
"id":"005X",
"label":"松江区",
"children":[
]
},
{
"id":"005Y",
"label":"青浦区",
"children":[
]
},
{
"id":"005Z",
"label":"浦东新区",
"children":[
]
},
{
"id":"0060",
"label":"静安区",
"children":[
]
}
]
},
{
"id":"0061",
"label":"浙江省",
"children":[
{
"id":"0062",
"label":"杭州市",
"children":[
]
},
{
"id":"0063",
"label":"绍兴市",
"children":[
]
}
]
},
{
"id":"0064",
"label":"山东省",
"children":[
]
}
]
代码部分:
public void Save(dynamic data)
{
List<TreeTerData> treeTerDataList = JsonConvert.DeserializeObject<List<TreeTerData>>(JsonConvert.SerializeObject(data));
//保存之前删除掉之前这个FkCust的所有数据,重新保存
string fkCust = ServiceBase.Get<LoginInfo>().CustCode;
List<TerGroupModel> groupModelList = Da.GetModelList<TerGroupModel>(x => x.FkCust == fkCust).ToList();
foreach (var gmodel in groupModelList)
{
Da.Delete(this.tb, this.pk, gmodel.Code);
}
//添加顶级节点和所有子节点
foreach (TreeTerData item in treeTerDataList)
{
root = 0;
string Code = BizBase.Get<BizAutoCode>().NextCode(this.tb, this.pk, 4);
TerGroupModel model = new TerGroupModel();
model.Code = Code;
model.FkCust = ServiceBase.Get<LoginInfo>().CustCode;
model.SName = item.label;
model.NLeveType = Convert.ToString(root);
Da.InsertModel<TerGroupModel>(model);
saveTree(item.children, Code,root);
}
}
/// <summary>
/// 递归保存树型数据
/// </summary>
/// <param name="treeTer"></param>
/// <param name="Code"></param>
public void saveTree(List<TreeTerData> treeTer, string Code,int root)
{
List<TreeTerData> terDataList = new List<TreeTerData>();
TerGroupModel model = new TerGroupModel();
//root++;
if (treeTer != null&& treeTer.Count > 0)
{
root++;
model.SParentCode = Code;
foreach (var item in treeTer)
{
Code = BizBase.Get<BizAutoCode>().NextCode(this.tb, this.pk, 4);
model.Code = Code;
model.FkCust = ServiceBase.Get<LoginInfo>().CustCode;
model.SName = item.label;
model.NLeveType = Convert.ToString(root);
Da.InsertModel<TerGroupModel>(model);
saveTree(item.children, Code, root);
//treeTer = item;
}
}
}