如何在c# treeview控件动态绑定数据库,实现2级目录,添加父节点并在父节点下添加子节点

如何在c# treeview控件动态绑定数据库,实现2级目录,添加父节点并在父节点下添加子节点,第1张

那就看看我做的,建立一个mutua类文件,在里面写代码

namespace *******

{

    class mutua

    {

        public static SqlConnection conn = null

        public DataSet ds = null

        public SqlDataAdapter sda = null

        public String ExceptionStr = ""

        public void Openlink()

        {

            conn = new SqlConnection()

            conn.ConnectionString = "Server=192.168.1.240uid=sapwd=chaimisin8712*database=GZ_DATA"

            try

            {

                conn.Open()

            }

            catch

            {

                conn.Close()

            }

        }

        public void linkSQL(String sql)

        {

            if (conn != null)

            {

                ds = new DataSet()

                sda = new SqlDataAdapter()

                sda.SelectCommand = new SqlCommand(sql, conn)

                SqlCommandBuilder builder = new SqlCommandBuilder(sda)

                sda.Fill(ds)

            }

        }

     }

 }

启动窗体初始化时就openlink打开链接,后面应用到窗体使用treeview就写这样的代码

        void getView()

        {

            mutua s = new mutua()

            mutua d = new mutua()

            mutua e = new mutua()

            s.linkSQL("Select Distinct bm from a_gydy order by bm")

            if (s.ds != null)

            {

                for (int i = 0 i < s.ds.Tables[0].Rows.Count i++)

                {

                    treeView1.Nodes.Add(s.ds.Tables[0].Rows[i][0].ToString())

                    d.linkSQL("Select Distinct gy from a_gydy where bm='" + s.dss.Tables[0].Rows[i][0].ToString() + "' order by gy")  

                    if (d.ds != null)

                    {

                        for (int j = 0 j < d.ds.Tables[0].Rows.Count j++)

                        {

                            treeView1.Nodes[i].Nodes.Add(d.ds.Tables[0].Rows[j][0].ToString())

                            d.linkSQL("Select Distinct gw from c_gy where bm='" + s.ds.Tables[0].Rows[i][0].ToString() + "' and gy='" + d.ds.Tables[0].Rows[j][0].ToString() + "' and gw<>'' order by gw")

                            if (e.ds != null)

                            {

                                for (int k = 0 k < e.ds.Tables[0].Rows.Count k++)

                                {

                                    treeView1.Nodes[i].Nodes[j].Nodes.Add(e.ds.Tables[0].Rows[k][0].ToString())

                                }

                            }

                        }

                    }

                }

            }

给treeView1加了三级目录

这段例子看看

一句话来说:

pNode.getAttribute("Text")

<script language="javascript"> 

         function CheckOne() 

         { 

          var cIndex=TreeView1.clickedNodeIndex 

          

           

          var tmp=cIndex.split(".") 

          if (tmp.length==2)  //代表都是第2层节点 

          { 

            var pNode=TreeView1.getTreeNode(cIndex) 

            var parentNode=pNode.getParent() 

            var NodeArray =new Array() 

            NodeArray=parentNode.getChildren() 

            for(var i=0i<NodeArray.lengthi++) 

            { 

                var cNode=NodeArray[i] 

                cNode.setAttribute('Checked','false') 

                if (cNode.getAttribute("Text")==pNode.getAttribute("Text")) 

                { 

                 cNode.setAttribute('Checked','true') 

                 document.all("Hidden1").value=cNode.getAttribute("Text") 

                 

                } 

                 

            } 

          } 

         } 

        </script>

描述一下需求: 

      加入有3个第一层的节点,然后这个三个第一层的节点下面都有3到5个不等的子节点。在每个第一层下面的子节点要单选一个,提交的时候点击另外的一个Button就可以了。上次你做的Demo,可以实现这个功能了,但是如果用户直接在CheckBOx而不是点节点的话,还是可以多选。后来我处理为不显示CheckBOx,点击后才出现CheckBOx,这样避免用户直接点CheckBox而出现在一个父节点下面选两个的情况。但老板要求必须全部都有CheckBox,并且点CheckBOx和点节点需要有同样的效果,所有我一直想法当用户点节点前面的CheckBox,也相当于点节点的效果,就是能在客户端触发一下Click。

<DIV style="FONT-SIZE: 12px Z-INDEX: 101 LEFT: 8px POSITION: absolute TOP: 8px" ms_positioning="text2D"><FONT face="Times New Roman">再详细的描述一下需求吧:<BR> 

                    加入有3个第一层的节点,然后这个三个第一层的节点下面都有3到5个不等的子节点。在每个第一层下面的子节点要单选一个,提交的时候点击另外的一个Button就可以了。上次你做的Demo,可以实现这个功能了,但是如果用户直接在CheckBOx而不是点节点的话,还是可以多选。后来我处理为不显示CheckBOx,点击后才出现CheckBOx,这样避免用户直接点CheckBox而出现在一个父节点下面选两个的情况。但老板要求必须全部都有CheckBox,并且点CheckBOx和点节点需要有同样的效果,所有我一直想法当用户点节点前面的CheckBox,也相当于点节点的效果,就是能在客户端触发一下Click。</FONT><BR> 

                <BR> 

            </DIV> 

            <iewc:TreeView id="TreeView1" style="Z-INDEX: 102 LEFT: 8px POSITION: absolute TOP: 136px" runat="server"> 

                <iewc:TreeNode Text="Node0" Expanded="True"> 

                    <iewc:TreeNode CheckBox="True" Text="Node3"></iewc:TreeNode> 

                    <iewc:TreeNode CheckBox="True" Text="Node4"></iewc:TreeNode> 

                    <iewc:TreeNode CheckBox="True" Text="Node5"></iewc:TreeNode> 

                </iewc:TreeNode> 

                <iewc:TreeNode Text="Node1"> 

                    <iewc:TreeNode Text="Node6"></iewc:TreeNode> 

                    <iewc:TreeNode Text="Node7"></iewc:TreeNode> 

                    <iewc:TreeNode Text="Node8"></iewc:TreeNode> 

                </iewc:TreeNode> 

                <iewc:TreeNode Text="Node2"> 

                    <iewc:TreeNode Text="Node9"></iewc:TreeNode> 

                    <iewc:TreeNode Text="Node10"></iewc:TreeNode> 

                    <iewc:TreeNode Text="Node11"></iewc:TreeNode> 

                </iewc:TreeNode> 

            </iewc:TreeView><INPUT id="Hidden1" style="Z-INDEX: 103 LEFT: 24px POSITION: absolute TOP: 296px" type="hidden" 

                name="Hidden1" runat="server"> 

            <asp:Button id="Button1" style="Z-INDEX: 104 LEFT: 24px POSITION: absolute TOP: 440px" runat="server" 

                Text="Submit"></asp:Button> 

            <asp:Label id="Label1" style="Z-INDEX: 105 LEFT: 96px POSITION: absolute TOP: 448px" runat="server" 

                Width="280px" ForeColor="Red" Font-Size="12px"></asp:Label>

Imports Microsoft.Web.UI.WebControls 

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

        TreeView1.Attributes.Add("oncheck", "javascript:CheckOne()") 

        TreeView1.Attributes.Add("onclick", "javascript:CheckOne()") 

        Dim tnode As TreeNode 

        For Each tnode In TreeView1.Nodes(0).Nodes 

            If tnode.Text = Hidden1.Value.Trim() Then 

                tnode.Checked = True 

            Else 

                tnode.Checked = False 

            End If 

        Next 

    End Sub 

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 

        Label1.Text = "您选择的节点为:" + Hidden1.Value 

    End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6641390.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存