c#WINFORM中的TREEVIEW和SQL连接形成树形结构

c#WINFORM中的TREEVIEW和SQL连接形成树形结构,例如:电器为根,下面有电视,电脑,-------;看清楚了我要的是WINFORM.要能用的。高分求助!都做... c#WINFORM中的TREEVIEW和SQL连接形成树形结构,例如:电器为根,下面有电视,电脑,-------;看清楚了我要的是WINFORM.要能用的。高分求助!
都做上注释好不好,你们不做注释那跟网上搜的有什么区别!
展开
 我来答
黎牛牛Pk
2016-03-18 · TA获得超过1042个赞
知道小有建树答主
回答量:396
采纳率:100%
帮助的人:108万
展开全部
private void FillTree()
        {
            this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
            this.treeView1.BeginUpdate();
            DataTable myFirstDt;
            DataTable myScendDt;
            TreeNode myScendNode;
            TreeNode myFirstNode;
            TreeNode myRootNode = new TreeNode();
            myRootNode.Text = "表名";
            this.treeView1.Nodes.Add(myRootNode);
            myFirstDt = new DataTable();//你在数据库里面获取的表
            
            try
            { 
                if( (myFirstDt.Rows.Count > 0) && (myFirstDt != null))
                {
                    foreach (DataRow firstRow in myFirstDt.Rows)
                    {
                        myFirstNode = new TreeNode();
                        if (firstRow["name"] != null)
                        {
                            myFirstNode.Text = firstRow["name"].ToString();
                            myRootNode.Nodes.Add(myFirstNode);
                            myScendDt = this.GetDataTableName(myFirstNode.Text);//GetDataTableName是一个自定义函数,根据第一个节点读取第二个节点的数据
                            if( (myScendDt.Rows.Count > 0) && (myScendDt != null))
                            {
                                foreach (DataRow scendRow in myScendDt.Rows)
                                {
                                    myScendNode = new TreeNode();
                                    if (scendRow["name"] != null)
                                    {
                                        myScendNode.Text = scendRow["name"].ToString();
                                        myFirstNode.Nodes.Add(myScendNode);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch(Exception e) 
            {
                MessageBox.Show(e.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            if (myRootNode.Nodes.Count > 0)
            {
                this.treeView1.SelectedNode = myRootNode.Nodes[0];
            }
            this.treeView1.EndUpdate();
            this.Cursor = Cursors.Default;
        }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友55b003835
2009-07-10
知道答主
回答量:12
采纳率:0%
帮助的人:14.6万
展开全部
private void CreateTreeViewRecursive(TreeNodeCollection nodes, DataTable dataSource, int parentid)
{
string filter;
filter = string.Format("父标识号={0}", parentid); //从0开始,可以自设
DataRow[] drarr = dataSource.Select(filter);
TreeNode node;
foreach (DataRow dr in drarr)
{
node = new TreeNode();

node.Text = (string)dr["节点名称"];
node.Tag = (int)dr["标识号"];
nodes.Add(node);

CreateTreeViewRecursive(node.Nodes, dataSource, (int)node.Tag);
}
}
你试试看这个对你有用不?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
锦绣九洲分类垃圾桶
2009-07-10 · TA获得超过864个赞
知道小有建树答主
回答量:504
采纳率:100%
帮助的人:514万
展开全部
private void BindTree()
{
DataTable dtGroup = new DataTable();
dtGroup = MainForm.MainWebService.ExecuteReaderBySQL("数字化工管系统", "select * from User_Group");//获取SQL中的数据源
treeView1.Nodes.Clear();
DataTable dtRoot = new DataTable();
int userGroup = Convert.ToInt32(MainForm.UserInfoArray[0]);//此处userGroup可以直接赋值为0

AddTreeNodes(userGroup,(TreeNode)null, dtGroup);
}

/// <summary> 添加单位信息
///
/// </summary>
/// <param name="PartentId"></param>
/// <param name="pnode"></param>
/// <param name="dtGroup"></param>
private void AddTreeNodes(int PartentId, TreeNode pnode, DataTable dtGroup)
{

//dtGroup = GetData("select * from User_Group");// 单位节点数据源
DataView dvTree = new DataView(dtGroup);
dvTree.RowFilter = "pid = " + PartentId;
foreach (DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (pnode == null)
{
Node.Text = Row["group_name"].ToString();
Node.Name = Row["id"].ToString();
treeView1.Nodes.Add(Node);

AddTreeNodes((int)Row["id"], Node, dtGroup);
}
else
{
Node.Text = Row["group_Name"].ToString();
Node.Name = Row["id"].ToString();
pnode.Nodes.Add(Node);

AddTreeNodes((int)Row["id"], Node, dtGroup);
}
}
}

数据库结构
列 id 组ID
列pid 父节点ID
列Group_name 节点名称

楼上的,你给的是WebForm中用的Treeview生成。。 LZ都注明要WinForm中用的了 。囧ing
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
偶浚后雪晴
2019-07-25 · TA获得超过4301个赞
知道大有可为答主
回答量:3131
采纳率:30%
帮助的人:416万
展开全部
private
void
CreateTreeViewRecursive(TreeNodeCollection
nodes,
DataTable
dataSource,
int
parentid)
{
string
filter;
filter
=
string.Format("父标识号={0}",
parentid);
//从0开始,可以自设
DataRow[]
drarr
=
dataSource.Select(filter);
TreeNode
node;
foreach
(DataRow
dr
in
drarr)
{
node
=
new
TreeNode();
node.Text
=
(string)dr["节点名称"];
node.Tag
=
(int)dr["标识号"];
nodes.Add(node);
CreateTreeViewRecursive(node.Nodes,
dataSource,
(int)node.Tag);
}
}
你试试看这个对你有用不?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式