winform treeview控件

q198708wyp 2011-10-21 08:40:13
winform中根据登录用户名的不同 动态加载 根节点,子节点,最好给出代码,像QQ一样的多少个分组,每个分组下多少个好友
有代码的童鞋请发我QQ521070107 本人分数全部给 有必要 再追加100分 我分数很多
...全文
159 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
q198708wyp 2011-10-21
  • 打赏
  • 举报
回复
用泛型来操作 15行代码 就搞定了
q198708wyp 2011-10-21
  • 打赏
  • 举报
回复
我解决了 谢谢各位 分数照样 给各位
F546445693 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cnwin 的回复:]
treeview控件用起来有问题吗?我觉得你是不是有点攥死牛角尖了?所谓的“根据登录用户名的不同”,又那么神秘吗?其实不就是检索相应的数据吗?不同的用户名登录后,treeview加载时,检索出该用户下所属的一级节点,之后的字节点可以用递归的方式完成。你是否是递归着一块不明白呢?
[/Quote]
+
萧炎 2011-10-21
  • 打赏
  • 举报
回复
csdn上有demo
点此进入下载
暖枫无敌 2011-10-21
  • 打赏
  • 举报
回复

表一:
FriendType
FriendTypeId FriendTypeName
1 我的好友
2 我的同事
3 我的家人
4 陌生人
表2:
Friends
FriendId FriendName FriendTypeId
1 张三 1
2 李四 1
3 王五 2
4 余六 2
5 田七 3
6 朱八 3
7 叶九 4
8 姚个 4


-----------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data;
namespace CSDNDemoTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
DataSet ds_FriendType = getDataSet("FriendType");
DataSet ds_Friends = getDataSet("Friends");
foreach (DataRow dr in ds_FriendType.Tables[0].Rows)
{
//好友类型表绑定,作为一级层次
TreeNode tn_origine = new TreeNode();
tn_origine.Text = dr["FriendTypeName"].ToString();
this.treeView1.Nodes.Add(tn_origine);
//好友表绑定
DataRow[] dr_arr = ds_Friends.Tables[0].Select("FriendTypeId="+int.Parse(dr["FriendTypeId"].ToString()));
if (dr_arr.Length > 0)
{
foreach (DataRow dr_sub in dr_arr)
{
TreeNode tn_sub = new TreeNode();
tn_sub.Text = dr_sub["FriendName"].ToString();
tn_origine.Nodes.Add(tn_sub);
}
}
}
}
//获取数据集
public DataSet getDataSet(string tableName)
{
DataSet ds = new DataSet();
using (SqlConnection con = new SqlConnection("Data Source=localhost;uid=sa;pwd=saiyang;Database=CSDN"))
{
con.Open();
string strSQL = "select * from "+tableName;
using (SqlDataAdapter sda = new SqlDataAdapter(strSQL, con))
{
sda.Fill(ds);
}
}
return ds;
}
}
}
cnwin 2011-10-21
  • 打赏
  • 举报
回复
下面是我写过的程序中递归方式加载treeview的一段代码,你可以参考一下。
Private Sub LoadTree()
Dim TrNode As New TreeNode
TvModule.BeginUpdate()
AddTree(TrNode, "")
TvModule.Nodes.Add(TrNode.Nodes(0))
TvModule.Nodes(0).Expand()
TvModule.EndUpdate()
End Sub
参数node为当前节点,当然初始时就是根节点,在代码段里面是动态改变的,Pkey 为其所属父节点的值(也就是数据库里的,我这里是使用string类型的)
Private Sub AddTree(ByVal Node As TreeNode, ByVal Pkey As String)
Dim Childs() As DataRow
Dim TNode As New TreeNode
If Node.Text = "" Then
'根节点
Node.Nodes.Add("R", "所有模块")
AddTree(Node.Nodes("R"), "R")
Else
Childs = DtModule.Select("pkey='" & Pkey & "'")
If Childs.Count > 0 Then
For Each R As ModuleRow In Childs
Node.Nodes.Add(R.Key, R.Func)
AddTree(Node.Nodes(R.Key), R.Key)
Next
End If
End If
End Sub
当然你的要求不同的就是,在你这边你需要先能取得属于当前用户的信息。以此为根。
暖枫无敌 2011-10-21
  • 打赏
  • 举报
回复
这个跟你的数据库表的设计有关,之前帮坛子里的做过一个类似的。
他的这个是部门下有员工,跟你的这个好友分类下有好友很类似,你参考一下。

地址:http://blog.csdn.net/taomanman/article/details/6561233
cnwin 2011-10-21
  • 打赏
  • 举报
回复
treeview控件用起来有问题吗?我觉得你是不是有点攥死牛角尖了?所谓的“根据登录用户名的不同”,又那么神秘吗?其实不就是检索相应的数据吗?不同的用户名登录后,treeview加载时,检索出该用户下所属的一级节点,之后的字节点可以用递归的方式完成。你是否是递归着一块不明白呢?

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧