pid name ppid
iii 父1 root
iii.dd 子1 iii
iii.aa 子2 iii
iii.dd.d1 叶1 iii.dd
iii.aa.a1 叶2 iii.aa
效果是
iii
iii.dd
iii.dd.d1
iii.aa
iii.aa.a1
iii 父1 root
iii.dd 子1 iii
iii.aa 子2 iii
iii.dd.d1 叶1 iii.dd
iii.aa.a1 叶2 iii.aa
效果是
iii
iii.dd
iii.dd.d1
iii.aa
iii.aa.a1
解决方案 »
- 按钮!!
- DataGrid中DropDownList问题
- 页面打印问题。。。。我的页面里有许多表格。。怎么设置才能使表格不被“撕裂”打印。。。。。有没控件
- ▲ASP.NET服务器上的WEB站点如何设置?
- 各位急救:出现oci.dll不能加载,设置oracle/ora92文件夹权限仍存在
- 关于ASP.NET打印的问题!
- 怎么样才能提高自己的.NET水平呢,自己做例子吗?
- 公司要做一个项目,怎样规划网站结构,数据库的设计,怎样才能做到专业一些,还有包括和美工的交流。。等等这些,请高手指点一二
- 难道免不了被格盘的命运?
- B/S系统如何控制指定客户端登陆?
- 《《请问Repeater怎么实现交替绑定》》附图!
- gridview在网站中应用的多吗?
{
DataView dv = new DataView();
TreeNode tmpNd = null;
dv.Table = ds.Tables[0];
dv.RowFilter = String.Format("parentid={0}", parentid);
foreach (DataRowView drv in dv)
{
tmpNd = new TreeNode();
tmpNd.Text = (string)drv["sortname"];//节点名称
tmpNd.NavigateUrl = String.Format("?id={0}", drv["id"]);//节点URL
//tmpNd.ImageUrl = ""; //节点图片
if (parentid == 0)
tmpNd.Expanded = true;
else
tmpNd.Expanded = false;
Nds.Add(tmpNd);
InitTree(Nds[Nds.Count - 1].ChildNodes, (int)drv["id"]);
}
}
参考
private void InitTree(TreeNodeCollection Nds,string ppid)
{
DataView dv = new DataView();
TreeNode tmpNd = null;
dv.Table = ds.Tables[0];
dv.RowFilter = String.Format("ppid='{0}'", parentid);
foreach (DataRowView drv in dv)
{
tmpNd = new TreeNode();
tmpNd.Text = (string)drv["pid"];//节点名称
if(tmpNd.Text=="iii"){
break;
}
Nds.Add(tmpNd);
InitTree(Nds[Nds.Count - 1].ChildNodes, (String)drv["ppid"]);
}
}
</asp:TreeView>
protected void Page_Load(object sender, EventArgs e)
{
GetTable();
GetValue("root", null);
}
public void GetTable()
{
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = ConfigurationManager.ConnectionStrings["Connection"].ConnectionString;
string str = "select id,name,parentid from ceshi";
SqlDataAdapter da = new SqlDataAdapter(str, conn);
DataTable dt = new DataTable();
da.Fill(dt);
ViewState["Table"] = dt;
}
}
public void GetValue(string parentid,TreeNode node)
{
DataView dv = new DataView(ViewState["Table"] as DataTable);
dv.RowFilter = "parentid='" + parentid + "'";
foreach (DataRowView rowview in dv)
{
TreeNode n = new TreeNode(rowview["id"].ToString(), rowview["id"].ToString());
if (node == null)
TreeView1.Nodes.Add(n);
else
node.ChildNodes.Add(n);
GetValue(rowview["id"].ToString(), n);
}
}
1.通过固定的父Id也就是root查询出所有的Id
2.通过第一个方法查询出的对象的Id与父Id对比查询出所有子节点
你应该有二个foreach循环
第一个循环1方法查询出的所有根节点
再用根据节点的Id做参数传入第二个方法中.将查询出来的结果再循环
在循环的最后再调用此方法InitTree