采用的非递归方式遍历树型结构,在遍历的时候,逻辑是没有问题的,但是却一直报错,是因为子节点遍历的时候,取值索引下标写错了,写的是根节点的索引下标。所以报错。
实体类:
public class Student
{
public int Id={get;set;}
public int? ParentId={get;set;}
public int ChildId={get;set;}
public String Name={get;set;}
public void AddStudentDal(Student student)
{
//这里面数据库添加操作,采用的是引入的开源数据库操作
using (var con=DbConfig.GetConnection())
{
model.Id=con.Insert(student);
}
}
}
Student student=new Student();
private void Button1_Click(Object sender,EventArgs e)
{
TreeListNode nodes=treeList1.Nodes;
for(int i=0;i<nodes.Count;i++)//遍历父亲节点
{
student.AddStudentDal(AddStudent(nodes,i));
TreeListNode SonNodes=nodes[i].Nodes;
for(int j=0;j<SonNodes.Count;j++)//遍历子节点
{
strudent.AddStudentDal(AddStudent(nodes,i,j));
}
}
MessageBox.Show("导出成功");
}
private Student AddStudent(TreeList nodes,int i)
{
student.ParentId=null;
student.ChildId=i;
student.Name=(string)nodes[i]["Name"];
}
private Student AddStudent(TreeList nodes,int i,int j)
{
student.ParentId=i;
student.ChildId=j;
student.Name=(string)nodes[j]["Name"];//之前存储错误的原因在于这里,把j写成了i。
}