1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 using System.Configuration; 11 using System.Data.SqlClient; 12 13 namespace TreeNode 14 { 15 public partial class frmMaster : Form 16 { 17 public frmMaster() 18 { 19 InitializeComponent(); 20 } 21 string connstr = ConfigurationManager.ConnectionStrings["str"].ConnectionString; 22 private void frmMaster_Load(object sender, EventArgs e) 23 { 24 Init(); 25 } 26 /// <summary> 27 /// 增加父节点; 28 /// </summary> 29 void Init() 30 { 31 tvNode.Nodes.Clear(); 32 string sql = "select * from [type] where tParentId=-1"; 33 // string sql = "select * from [type] where tParentId=-1"; 34 using (SqlConnection conn = new SqlConnection(connstr)) 35 { 36 using (SqlCommand cmd = new SqlCommand(sql, conn)) 37 { 38 conn.Open(); 39 using (SqlDataReader dr = cmd.ExecuteReader()) 40 { 41 while(dr.Read()) 42 { 43 TreeNode parent = new TreeNode(); 44 parent.Text=dr["tName"].ToString().Trim(); 45 tvNode.Nodes.Add(parent); 46 //调用 CreateChild()方法后,只能导入最前面的一行,后面不能导入,请大家指点一下:研究那里出了问题! 47 // CreateChild(dr["tId"].ToString(), parent); 48 } 49 } 50 tvNode.ExpandAll(); 51 } 52 } 53 } 54 55 /// <summary> 56 /// 增加子节点 57 /// </summary> 58 /// <param name="pId">父节点的ID</param> 59 /// <param name="parent">父节点的位置</param> 60 void CreateChild(string pId,TreeNode parent) 61 { 62 string sql = "select * from [type] where tParentId"+pId; 63 using(SqlConnection conn=new SqlConnection(connstr)) 64 { 65 using(SqlCommand cmd=new SqlCommand(sql,conn)) 66 { 67 using(SqlDataReader dr= cmd.ExecuteReader()) 68 { 69 while (dr.Read()) 70 { 71 //添加父节点; 72 TreeNode tv = new TreeNode(); 73 tv.Text=dr["tName"].ToString(); 74 tv.Tag=dr["tId"].ToString(); 75 parent.Nodes.Add(tv); 76 } 77 } 78 } 79 } 80 } 81 } 82 }
图片不能显示
看不到你的回答,不过,谢谢你
@z1126: 我没有回答您的提问,只是告诉您一下您提问中的图片不能显示
调用AddRange()方法,批量添加.参照如下例子:
student类中有姓名,性别,年龄属性:
List<student> students = new List<student>()
students.AddRange(new student[]{
new student("小王", "女", 19),
new student("小白", "女", 19)
});
2楼正解,大批量数据的时候使用AddRange传入泛型集合。
只能导入最前面的一行是什么意思,只能添加父节点么,winform是吧,我觉得应该先把子节点加入到父节点中,然后再把父节点加到树里面,不晓得我理解的有木有问题
子节点已经加入到父节点中了,上面代码与学习提供的代码、数据库存都完全一致,老师用的是vs2008,sql2005,而我用的是vs2012,sql2012,按理应该编译正常,可就是不行,
就是调用
CreateChild(dr["tId"].ToString(), parent);
就不行了,总之,不调用只能添加父节点,调用就出现了上述情况。
只要是用数据库,这种情况已经出现过好多次了,