高分相求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#