下面问题 用递归怎么做
现有2张表 产品和产品类别(无限极)
类别ID 类别名称 上级ID 类别编码
cid cname pid cencode
1 大类一 0 10
2 大类二 0 11
3 大类三 0 12
4 二级类 1 1001
5 三级类 4 100101
6 二级类 1 1002
7 三级类 4 100102
产品表
产品ID 产品名称 产品类别ID 产品编码
1 产品一 5 10010101
2 产品二 5 10010102
3 产品三 4 100101
4 产品四 4 100102
5 产品五 7 10010201
问题来了 ,现在我要修改产品类别信息.
比如把7号(三级类)修改为pid为1,包括其类别及其子类编码和相关别的产品编码都要随之改变:
呈现结果为:7号(三级类)编码为1003,产品五编码为100301
若把4号类别(二级类)的pid改为3,那么呈现结果为:5号(三级类)编码为120101 产品编码也随着改变
本人菜鸟 最好写出详细过程,谢谢大侠了
[解决办法]
写一个思路给你,我想简单的思路比完整的代码更有利于你学习:
LoadRoot()
{
data = select * from table where pid = 0
foreach (item in data)
{
treeview.Nodes.Add(item)
LoadSubItems(item, item.id)
}
}
LoadSubItems(Node node, id)
{
data = select * from table where pid = id
foreach (item in data)
{
node.Nodes.Add(item)
LoadSubItems(item, item.id)
}
}
[解决办法]
有一个规定,一个产品只能对应一个产品类别ID;
public void updateCode(string ID, string OldCode, string newCode)
{
string sql = "select * from leibie where pid = '"+ID+"'";
DataTable dt = new DataTable();
/* 运行以上sql拿出dt*/
if (dt.Rows.Count > 0)
{
foreach (DataRow dr in dt.Rows)
{
newCode = dr["cencode"].ToString().Replace(OldCode, newCode);
OldCode = dr["cencode"].ToString();
updateCode(dr["ID"].ToString(), newCode, OldCode);
}
}
else
{
sql = "update leibie set cencode='" + newCode + "' where id = '" + ID + "'";
//运行sql,更新类别code
sql = "update chanpin set 产品编码=REPLACE (产品编码," + OldCode + "," + newCode + ") where 产品类别ID = '" + ID + "'";
//运行sql,更新产品code
}
}