当前位置:编程学习 > C#/ASP.NET >>

高分相求Tree关联表格的解决方法(C#)

--------------------编程问答-------------------- 我只想到一个比较笨的方法
用div吧,把表格放到对应的div中,点击div的标题时控制div的显示或隐藏
--------------------编程问答-------------------- 如果你只是想实现树的父子关系,可以自己拼表格形成,我之前也做了个这种的,类似csdn的导航树
给你个小例子吧

//自定义树绑定
    private void TreeDataBind()
    {
        string strcomm;
        if (IsLog == "0")
        {
            strcomm = "select subiid, iid, subindustry, subtip, '0' as isin from client_sub_industry where status=1";
        }
        else
        {
            strcomm =
                "SELECT a.subiid, a.iid, subindustry, subtip, isin = CASE WHEN a.subiid IN (SELECT subiid FROM qun_users WHERE (logname = '" + User.Identity.Name + "')) THEN '1' ELSE '0' END FROM client_sub_industry a WHERE (status = 1)";
        }
        DataSet ds =
            PycSQLHelper.SqlHelper.ExecuteDataset(PycSQLHelper.SqlHelper.StoreConnString, CommandType.Text, strcomm);
        DataTable dt = ds.Tables[0];
        DataView dv = dt.DefaultView;
        dv.RowFilter = "iid=" + "0";
        foreach (DataRowView drv in dv)
        {
            string tdpid = drv["subiid"].ToString();
            //输出父类
            SbTree.Append("<tr>");
            SbTree.Append("<td id=\"" + "p" + tdpid + "\" colspan=\"3\" style=\"width: 100%;font-size:10.5pt\" onmousemove=\"ShowHand(this)\" onclick=\"nodeClick(this)\">");
            SbTree.Append("<a herf=\"\">" + drv["subindustry"] + "</a>");
            SbTree.Append("</td>");
            SbTree.Append("</tr>");
            AddReplies(dt, drv["subiid"].ToString());
        }
        this.ltTree.Text = SbTree.ToString();
    }
    //树状菜单绑定-递归函数 
    private static void AddReplies(DataTable dt, string ss)
    {
        DataView dv = new DataView(dt);
        dv.RowFilter = "iid= " + ss;
        //如果包含小分类,则开始输出小分类
        if (dv.Count > 0)
        {
            foreach (DataRowView drv in dv)
            {
                string tdid = drv["subiid"].ToString();
                string subtipid = "subtip" + tdid;
                SbTree.Append("<tr>");
                SbTree.Append("<td id=\"" + tdid + "\" style=\"width:160px;text-align:left;\" onclick=\"nodeClick(this)\" onmousemove=\"ShowHand(this)\" onmouseout=\"layer_show(this,'hide')\" onmouseover=\"layer_show(this,'show')\">");
                SbTree.Append("  " + "<a herf=\"\">" + drv["subindustry"] + "</a>");
                SbTree.Append("</td>");
                SbTree.Append("<td style=\"width:60px;text-align:left;\">");
                SbTree.Append(GetNum(drv["subiid"].ToString()));
                SbTree.Append("</td>");
                SbTree.Append("<td style=\"text-align:right; width:20px;\">");
                if (drv["isin"].ToString() == "1")
                {
                    SbTree.Append("<img alt=\"退出\" title=\"退出\" src=\"../images/减.jpg\" id=\"" + "quit" + tdid + "\" onclick=\"joinC(this)\"/>");
                    SbTree.Append("<img alt=\"加入\" title=\"加入\"  src=\"../images/加.jpg\" id=\"" + "join" + tdid + "\" style=\"display:none\" onclick=\"joinC(this)\"/>");
                }
                else
                {
                    SbTree.Append("<img alt=\"退出\" title=\"退出\" src=\"../images/减.jpg\" id=\"" + "quit" + tdid + "\" style=\"display:none\" onclick=\"joinC(this)\"/>");
                    SbTree.Append("<img alt=\"加入\" title=\"加入\" src=\"../images/加.jpg\" id=\"" + "join" + tdid + "\" onclick=\"joinC(this)\"/>");
                }
                SbTree.Append("</td>");
                SbTree.Append("</tr>");
                SbTree.Append("<div  id=\"" + subtipid + "\" class=\"zhushi\" style=\"visibility:hidden;overflow:auto; position:absolute \">");
                SbTree.Append(drv["subtip"]);
                SbTree.Append("/div>");
                AddReplies(dt, drv["subiid"].ToString());
            }
        }
    }


<div id="left" runat="server" style="float: left; text-align: left; width: 255px; height: 586px;
                            overflow-y: scroll; border: #003278 1px solid">
                            <table width="90%">
                                <asp:Literal ID="ltTree" runat="server"></asp:Literal></table>                            
                        </div>

我这个因为没要求展开\收缩,所以没做,你可以自己加上,挺简单的 --------------------编程问答-------------------- 看这个帖子,一样的问题:
http://topic.csdn.net/u/20100505/08/afda7156-fe7e-49a1-8bd2-65a0c0a4f449.html?6124 --------------------编程问答-------------------- 前台添加treeview控件,后台这样加代码:

        TreeNode tr = new TreeNode("  <table border='1' cellspacing='0' cellpadding='0' width=\"100%\"><tr><td>111</td><td>222</td></tr></table> ");
tvMenu.Nodes.Add(tr); //tvMenu是你前台treeview的id

这种方法就是注意一下双引号,要么用单引号代替,要么用\"代替即可 --------------------编程问答-------------------- 谢谢,我正在看上面的代码,有没有C\S 版的? --------------------编程问答-------------------- 我目前的想法是这样的:
treeView的数据来自数据库表 RW(nodeId,parentId,nodeName),
在没有现成表格控件的前提下,右边的表格和数据(开始时间、结束时间、工时)可以用paint()画出来,
但是,主要问题是:1右边表格和数据与Tree对齐(通过ViewTree的属性);2如何让右边表格跟随Tree扩展和收缩,可能做起来比较麻烦。3如果左边不用TreeView控件,那么这个树怎样实现类似于TreeView控件的可以设置展开层次的属性,要有公共属性nodeId进而可以编辑表格中的内容;

当然,最好是有现成的表格控件,可以实现和TreeView搭配使用的。

--------------------编程问答-------------------- 学习2楼 --------------------编程问答-------------------- 自己顶,看有没有Graphics高手。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,