首页新闻找找看学习计划

数据添加到TreeNode时,只能添加一行,

0
悬赏园豆:30 [待解决问题]

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的主页 z1126 | 初学一级 | 园豆:151
提问于:2013-04-01 22:19
< >
分享
所有回答(4)
0

图片不能显示

dudu | 园豆:41258 (高人七级) | 2013-04-01 22:21

看不到你的回答,不过,谢谢你

支持(0) 反对(0) z1126 | 园豆:151 (初学一级) | 2013-04-01 22:39

@z1126: 我没有回答您的提问,只是告诉您一下您提问中的图片不能显示

支持(0) 反对(0) dudu | 园豆:41258 (高人七级) | 2013-04-01 22:41
0

 调用AddRange()方法,批量添加.参照如下例子:

student类中有姓名,性别,年龄属性:

List<student> students = new List<student>()

students.AddRange(new student[]{       

          new student("小王", "", 19),        

         new student("小白", "", 19)           

      });

伏草惟存 | 园豆:1420 (小虾三级) | 2013-04-02 00:13
0

2楼正解,大批量数据的时候使用AddRange传入泛型集合。

问心、 | 园豆:104 (初学一级) | 2013-04-02 13:18
0
只能导入最前面的一行是什么意思,只能添加父节点么,winform是吧,我觉得应该先把子节点加入到父节点中,然后再把父节点加到树里面,不晓得我理解的有木有问题
*^__^* | 园豆:428 (菜鸟二级) | 2013-04-02 16:02
子节点已经加入到父节点中了,上面代码与学习提供的代码、数据库存都完全一致,老师用的是vs2008,sql2005,而我用的是vs2012,sql2012,按理应该编译正常,可就是不行,
就是调用
CreateChild(dr["tId"].ToString(), parent);   
就不行了,总之,不调用只能添加父节点,调用就出现了上述情况。

只要是用数据库,这种情况已经出现过好多次了,
支持(0) 反对(0) z1126 | 园豆:151 (初学一级) | 2013-04-03 07:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册