C#里的treeview控件如何能绑定数据库里的数据

本文介绍了如何在C# Winform应用中使用TreeView控件展示数据库中的数据。首先创建了一个名为CateTable的数据库表,接着编写了一个存储过程CateTable_GetList来获取数据。在应用程序加载时,通过SqlConnection、SqlCommand和SqlDataAdapter从数据库中填充数据到DataSet。然后遍历数据,为每个数据项创建TreeNode,并根据RootID和ParentID将其添加到合适的树节点下。最后,展开所有树节点,完成数据绑定。

应用程序,窗体里拖放一个TreeView控件,想把数据库里的数据在这个控件里显示出来

 

  TREEVIEW控件是Winfrom窗体里的 不是ASP.NET里的TREEVIEW

 

代码如下:

 

CREATE TABLE CateTable (
      [ID] [int] IDENTITY (1, 1) NOT NULL ,
       [CateName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
       [RootID] [int] NOT NULL ,
       [ParentID] [int] NOT NULL
)
GO

存储过程:
CREATE PROCEDURE CateTable_GetList AS
BEGIN
       Select
              CateID,
              CateName,
              RootID,
              ParentID
       From
              CateTable
       Order By
              CateID,RootID,ParentID
END

代码:
        private void MainForm_Load(object sender, EventArgs e)
        {
            //从数据库中读取数据
            SqlConnection con = new SqlConnection(ConnString.ConStr);
            SqlCommand cmd = new SqlCommand("CateTable_GetList", con);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            try
            {
             sda.Fill(ds);
            }
            catch
            {
            }
            finally
            {
             cmd = null;
             con.Close();
            }
            //往TreeView中添加树节点
            //添加根节点
            TreeNode tn = new TreeNode();
            tn.Text = "种类";
            tn.Name = "0";//Name作为ID
            tn.Tag = "0";//Tag作为RootID
            tn.ImageIndex = 0;
            tn.SelectedImageIndex = 0;
            tv.Nodes.Add(tn);//该TreeView命名为tv
            tv.SelectedNode = tv.TopNode;
            //把其他节点加上去
            if (ds != null)
            {
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    tn = new TreeNode();
                    tn.Text = dr["CateName"].ToString();
                    tn.Name = dr["CateID"].ToString();//Name作为CateID
                    tn.Tag = dr["RootID"].ToString();//Tag作为RootID
                    tn.ImageIndex = 1;
                    tn.SelectedImageIndex = 1;
              //判断是否为主节点
                    if (dr["CateID"].ToString() == dr["RootID"].ToString())
                    {
               //主节点
                        tv.SelectedNode = tv.TopNode;
                    }
                    else
                    {
               //其他节点
                        if (tv.SelectedNode.Name != dr["ParentID"].ToString())
                        {
                            TreeNode[] tn_temp = tv.Nodes.Find(dr["ParentID"].ToString(), true);
                            if (tn_temp.Length > 0)
                            {
                                tv.SelectedNode = tn_temp[0];
                            }
                        }
                    }
                    tv.SelectedNode.Nodes.Add(tn);
                }
                tv.ExpandAll();//展开TreeView
                tv.SelectedNode = tv.TopNode;
            }
        }

03-08
### MathPix工具介绍 Mathpix Snipping Tool 是一款强大的数学公式识别工具,从最初的原型发展至今已经历了多次迭代和功能增强[^1]。该工具不仅能处理简单的数学表达式,还可以应对复杂的数学模型以及多行公式,并且支持手写公式的识别。 这款应用程序通过不断的科技创新与用户反馈改进,在学术研究和技术领域赢得了良好声誉,成为许多科研人员不可或缺的工作伙伴之一。除了基本的功能外,Mathpix 还提供了多种高级特性来满足不同用户的特定需求。 ### 使用方法 #### 安装与启动 为了使用 Mathpix Snipping Tool ,首先需要下载安装程序并按照提示完成设置过程。一旦成功安装后即可随时调用此应用来进行截图操作。 #### 截取屏幕上的公式图像 当遇到想要转换成 LaTeX 或 AsciiMath 的图片时,只需打开软件界面按下快捷键(默认为 `Ctrl+Alt+M`),此时鼠标指针会变为十字形状以便于选取目标区域;框选所需部分之后松开按键即刻上传至云端服务器等待进一步分析处理。 #### 获取LaTeX代码片段 经过短暂几秒钟的时间延迟过后,所截获的内容将以纯文本形式显示出来供复制粘贴到其他编辑器当中继续编写文档或是分享给他人查看交流之用。 ```python import pyperclip # 假设已获取到LaTeX字符串 stored_in_variable named latex_code pyperclip.copy(latex_code) print("LaTeX code has been copied to clipboard.") ``` 对于希望深入探索更多可能性的用户来说,可以考虑查阅官方提供的扩展插件——如用于解析Markdown文件内的公式标记语法的库 **mathpix-markdown-it** [^2] ——这将进一步提升工作效率和个人体验感。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值