本帖最后由 xiao0919 于 2010-05-12 16:10:00 编辑

解决方案 »

  1.   

    我只想到一个比较笨的方法
    用div吧,把表格放到对应的div中,点击div的标题时控制div的显示或隐藏
      

  2.   

    如果你只是想实现树的父子关系,可以自己拼表格形成,我之前也做了个这种的,类似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("&nbsp;&nbsp;" + "<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>我这个因为没要求展开\收缩,所以没做,你可以自己加上,挺简单的
      

  3.   

    看这个帖子,一样的问题:
    http://topic.csdn.net/u/20100505/08/afda7156-fe7e-49a1-8bd2-65a0c0a4f449.html?6124
      

  4.   

    前台添加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这种方法就是注意一下双引号,要么用单引号代替,要么用\"代替即可
      

  5.   

    我目前的想法是这样的:
    treeView的数据来自数据库表 RW(nodeId,parentId,nodeName),
    在没有现成表格控件的前提下,右边的表格和数据(开始时间、结束时间、工时)可以用paint()画出来,
    但是,主要问题是:1右边表格和数据与Tree对齐(通过ViewTree的属性);2如何让右边表格跟随Tree扩展和收缩,可能做起来比较麻烦。3如果左边不用TreeView控件,那么这个树怎样实现类似于TreeView控件的可以设置展开层次的属性,要有公共属性nodeId进而可以编辑表格中的内容;当然,最好是有现成的表格控件,可以实现和TreeView搭配使用的。
      

  6.   

    自己顶,看有没有Graphics高手。