当前位置:编程学习 > C#/ASP.NET >>

求一个算法,自动生成指定格式的编号的问题,希望有代码

C#语言,TreeView当插入数据库时比如根节点编号是CY,然后下面依次是CY01,CY0101

CY
-CY01
---CY0101

这些编号是在添加到数据库时自动生成的,每添加一个节点时,编号都是自己生成

救救我吧,这个问题困扰我一天了 --------------------编程问答-------------------- 写一个存储过程吧 --------------------编程问答-------------------- 父节点id应该知道吧。
通过查询先获得同级的最大id
大概是这样:
select max(id) from tablename where parentid = 父id

然后最大id加1。。。。。 --------------------编程问答-------------------- 帮顶..................... --------------------编程问答-------------------- 到底是在数据库中生成,还是在程序中生成?
如果是在程序中生成:

TreeNode tn=treeView1.SelectedNode;
string strText=tn.Text+tn.Nodes.Count.ToString("00");//多少位数字就加多少个0
TreeNode stn=tn.Nodes.Add(strText);
//其他处理

--------------------编程问答-------------------- up --------------------编程问答-------------------- 还是在数据库中生成简单。最好利用触发器实现。 --------------------编程问答-------------------- 用SQL解决。
把你的表结构贴出来。 --------------------编程问答--------------------

int i=TreeView1.selectnode.nodes.count;
StringBuilder sb = new StringBuilder();
sb.Append("CY");
if(i<10)
{
    sb.Append("0");
}
sb.Append((i+1).ToString());
--------------------编程问答-------------------- 然后sb.ToString()就是生成后的 --------------------编程问答-------------------- 以前用过的一个方法, 假定有一个结果集,列为 id pid(指向父点) bh(编号) name. 其中的编号有的有,有的没有.现在需要补齐所有的编号. 算法:

1. While循环遍历结果集. 
2. 如果是根节点,生成编号.写入当前行
3. 如果不是根节点, 而且当前记录没有编号,查找父记录是否有编号
   a)没有的话,跳过.
   b)有的话读出父点的编号, 假如为05. 在做循环从1 - 99,生成 0501,0502...0509.的编号,顺序查找编号是否占用,知道找到没有占用的,写入当前记录.
4. 继续循环直到所有的编号都已经生成.

这个算法的速度受节点深度的影响. 为了避免无限循环,还应该增加一个最大循环次数.

 
--------------------编程问答-------------------- 取最大值
select isnull(max(convert (int ,right(ecsTyCode,2))),0)+1 as maxcode  from mst_bs_ecsType where  left(ecsTyCode,len('FAAABBB'))='FAAABBB' and len(ecsTyCode)=len('FAAABBB')+2
其中"FAAABBB"为父结点.
要生成的结点为"FAAABBB"+上面的值. --------------------编程问答-------------------- 写SP算法吧
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,