我现在只想用asp.net的treeview控件做一个动态树.可就是不显示,对数据表有什么要求吗?
还有在treeview控件的属性里有什么东西吗?用跟踪,也能看到 ParentId值,怎么没进入foreach()呀。这是我的表
CREATE TABLE [TableName] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[ParentId] [int],
[ParentName] [nvarchar] (64),
[Img_url] [nvarchar] (64)) ON [PRIMARY]
GO这是我的代码
private void InitTreeView(TreeNodeCollection nds,int parentId)
{
TreeNode tmpNd;
DataView dv = new DataView(); SqlConnection Sql_Conn = new SqlConnection("server=;uid=sa;pwd=;database=");
SqlDataAdapter Sql_Da = new SqlDataAdapter("select * from TableName",Sql_Conn); DataSet ds = new DataSet();
Sql_Da.Fill(ds);
dv = ds.Tables[0].DefaultView;
// 父级ID
dv.RowFilter = "ParentId=" + parentId ;
foreach(DataRowView drv in dv)
{
tmpNd = new Microsoft.Web.UI.WebControls.TreeNode(); tmpNd.CheckBox = false;
tmpNd.Expanded = true;
tmpNd.Checked = false;
tmpNd.ID = drv["id"].ToString();
tmpNd.Text = drv["ParentName"].ToString();
//tmpNd.ImageUrl="../images/Tree/"+drv["Img_url"].ToString();
tmpNd.Target = "Description";
nds.Add(tmpNd);
InitTreeView(tmpNd.Nodes,int.Parse(tmpNd.ID));
}
}
private void Page_Load(object sender, System.EventArgs e)
{
if( !IsPostBack )
{
TreeView1.Nodes.Clear();
TreeNode tn = new TreeNode();
tn.Text = "TreeView";
tn.ID = "0";
//tn.ImageUrl = "../images/Tree/Desktop.gif";
TreeView1.Nodes.Add(tn);
InitTreeView(tn.Nodes, 0);
}
}
还有在treeview控件的属性里有什么东西吗?用跟踪,也能看到 ParentId值,怎么没进入foreach()呀。这是我的表
CREATE TABLE [TableName] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[ParentId] [int],
[ParentName] [nvarchar] (64),
[Img_url] [nvarchar] (64)) ON [PRIMARY]
GO这是我的代码
private void InitTreeView(TreeNodeCollection nds,int parentId)
{
TreeNode tmpNd;
DataView dv = new DataView(); SqlConnection Sql_Conn = new SqlConnection("server=;uid=sa;pwd=;database=");
SqlDataAdapter Sql_Da = new SqlDataAdapter("select * from TableName",Sql_Conn); DataSet ds = new DataSet();
Sql_Da.Fill(ds);
dv = ds.Tables[0].DefaultView;
// 父级ID
dv.RowFilter = "ParentId=" + parentId ;
foreach(DataRowView drv in dv)
{
tmpNd = new Microsoft.Web.UI.WebControls.TreeNode(); tmpNd.CheckBox = false;
tmpNd.Expanded = true;
tmpNd.Checked = false;
tmpNd.ID = drv["id"].ToString();
tmpNd.Text = drv["ParentName"].ToString();
//tmpNd.ImageUrl="../images/Tree/"+drv["Img_url"].ToString();
tmpNd.Target = "Description";
nds.Add(tmpNd);
InitTreeView(tmpNd.Nodes,int.Parse(tmpNd.ID));
}
}
private void Page_Load(object sender, System.EventArgs e)
{
if( !IsPostBack )
{
TreeView1.Nodes.Clear();
TreeNode tn = new TreeNode();
tn.Text = "TreeView";
tn.ID = "0";
//tn.ImageUrl = "../images/Tree/Desktop.gif";
TreeView1.Nodes.Add(tn);
InitTreeView(tn.Nodes, 0);
}
}
解决方案 »
- 发不了邮件(内附代码)
- 修改asp.net form 的action
- Login控件问题~!~一个电脑上创建多个应用程序,使用同一数据库出错~~~
- 如何传值的长度大于255个字符,该怎么办啊!
- 关于多语言的问题
- 奇怪的错误<--------------------------------------------------------
- 100 分,请教
- 我用.net作了个网站,当访问不存在的目录或文件时,网页就会自动跳到首页,能否只显示IIS的错误页面,不跳到首页
- sql 语句帮忙看下
- 菜鸟的100分问题,用Microsoft Visual Studio .NET开发ASP.net网站出现的问题!
- 请教各位:怎样在浏览器状态栏文字显示用户的登录名?
- GridView问题
foreach (DataRowView row in dvTree)
{
TreeNode Node = new TreeNode();
if (pNode == null)
{ //添加根节点
if (row["MENU_DELETE"].ToString() == "1")//如果标记删除那么是红色
{
Node.Text = "<font color='red'>" + row["MENU"].ToString() + "</font>";
Node.ToolTip = "此目录已标记删除";
}
else
{
Node.Text = row["MENU"].ToString();
}
Node.Expanded = true;
Node.Value = row["MENU_ID"].ToString();
//Node.PopulateOnDemand = true;
menuTR.Nodes.Add(Node);//注意这是添加节点
AddTree(row["MENU_ID"].ToString(), Node);//再次递归
}
else
{
if (row["MENU_DELETE"].ToString() == "1")
{
Node.Text = "<font color='red'>" + row["MENU"].ToString() + "</font>";
Node.ToolTip = "此目录已标记删除";
}
else
{
Node.Text = row["MENU"].ToString();
}
Node.Value = row["MENU_ID"].ToString();
//Node.PopulateOnDemand = true;
pNode.ChildNodes.Add(Node);//注意这句和根节点的区别
AddTree(row["MENU_ID"].ToString(), Node);//再次递归
}
}
void AddTree(string ParentID,TreeNode pNode)//递归节点
{
DataSet treeDs = (DataSet)this.ViewState["ds"];
DataView dvTree = new DataView(treeDs.Tables[0]);
//过滤ParentID,得到当前的所有子节点
dvTree.RowFilter = "[MENU_P]='" + ParentID.ToString()+"'";
foreach (DataRowView row in dvTree)
{
TreeNode Node = new TreeNode();
if (pNode == null)
{ //添加根节点
if (row["MENU_DELETE"].ToString() == "1")//如果标记删除那么是红色
{
Node.Text = "<font color='red'>" + row["MENU"].ToString() + "</font>";
Node.ToolTip = "此目录已标记删除";
}
else
{
Node.Text = row["MENU"].ToString();
}
Node.Expanded = true;
Node.Value = row["MENU_ID"].ToString();
//Node.PopulateOnDemand = true;
menuTR.Nodes.Add(Node);
AddTree(row["MENU_ID"].ToString(), Node);//再次递归
}
else
{
if (row["MENU_DELETE"].ToString() == "1")
{
Node.Text = "<font color='red'>" + row["MENU"].ToString() + "</font>";
Node.ToolTip = "此目录已标记删除";
}
else
{
Node.Text = row["MENU"].ToString();
}
Node.Value = row["MENU_ID"].ToString();
//Node.PopulateOnDemand = true;
pNode.ChildNodes.Add(Node);
AddTree(row["MENU_ID"].ToString(), Node);//再次递归
}
}
}page load
{
if(!ispost--)
{
AddTree("0", null);//"0"这里用的是字符型,你也可以换成int,别忘了把void AddTree(string ParentID,TreeNode pNode)更改成int ParentID}
}