private void Page_Load(object sender, System.EventArgs e)
{
InitItemTree(tv.Nodes,"0");
} //初始化科目树,并通过递归调用显示子树
private void InitItemTree(TreeNodeCollection tncCurrent,string sParentID)
{
Street.Rule.Popedom oPopedom = new Street.Rule.Popedom();
int userID = this.GetUserID();
int operate = 0;
int moduleID = 0;
DataTable dt = dt = this.GetModuleList();
dt.TableName = "ModuleList";
DataView dv = new DataView();
TreeNode nodTemp;
dv.Table = dt;
dv.RowFilter = " ParentID = '" + sParentID + "'";
dv.Sort = " Number DESC";
foreach(DataRowView drv in dv)
{
nodTemp = new TreeNode();
nodTemp.ID = drv["ModuleID"].ToString();
nodTemp.Text = drv["ModuleName"].ToString();
nodTemp.NavigateUrl = drv["ModuleUrl"].ToString();
nodTemp.Target = "main";
try
{
moduleID = int.Parse(drv["ModuleID"].ToString());
}
catch{}
if(moduleID>0)
{
operate = oPopedom.GetOperate(userID,moduleID);
}
if(operate>1)
{
tncCurrent.Add(nodTemp);
}
//递归调用显示子树
InitItemTree(nodTemp.Nodes,nodTemp.ID);
}
}
{
InitItemTree(tv.Nodes,"0");
} //初始化科目树,并通过递归调用显示子树
private void InitItemTree(TreeNodeCollection tncCurrent,string sParentID)
{
Street.Rule.Popedom oPopedom = new Street.Rule.Popedom();
int userID = this.GetUserID();
int operate = 0;
int moduleID = 0;
DataTable dt = dt = this.GetModuleList();
dt.TableName = "ModuleList";
DataView dv = new DataView();
TreeNode nodTemp;
dv.Table = dt;
dv.RowFilter = " ParentID = '" + sParentID + "'";
dv.Sort = " Number DESC";
foreach(DataRowView drv in dv)
{
nodTemp = new TreeNode();
nodTemp.ID = drv["ModuleID"].ToString();
nodTemp.Text = drv["ModuleName"].ToString();
nodTemp.NavigateUrl = drv["ModuleUrl"].ToString();
nodTemp.Target = "main";
try
{
moduleID = int.Parse(drv["ModuleID"].ToString());
}
catch{}
if(moduleID>0)
{
operate = oPopedom.GetOperate(userID,moduleID);
}
if(operate>1)
{
tncCurrent.Add(nodTemp);
}
//递归调用显示子树
InitItemTree(nodTemp.Nodes,nodTemp.ID);
}
}
解决方案 »
- 关于guid字符串中 字符顺序的问题?
- 点了下载又点了取消导致的报错怎么处理
- 分页控件问题
- 谁有vb.net写的在线投票系统,要求可以控制是单选或复选
- C# 编写带消息队列的FTP 上传功能 的源码
- 我想用ASP.NET模仿如下网站,是不是明智的选择?
- 子页面新增记录保存后,父页面中的gridview重新绑定,用asp.net ajax 实现 ,怎么搞哦?
- 不能用javascript、脚本等等,开发在线文本编辑器,各位给点建议...
- ~~~~~~~~~~~~~~~~~再开一贴求解,girdview点击行的问题~~~~~~~~~~~~~~~~~~~
- 哪里有XML的投票系统?
- 哪错了呢? 50分求助简单问题
- 求!asp.net+vb.net的程序源码,供学习用!
就是调数据库中的模块列表,用ParentID分层
Create three .aspx filesTreeViewDataSet.aspx<%@ import Namespace="Microsoft.Web.UI.WebControls" %>
<%@ Register TagPrefix="IE" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls" %><html>
<head>
<title>
TreeViewDataSet.aspx
</title>
</head>
<body>
<form runat="Server">
<IE:TreeView
AutoPostBack="True"
TreeNodeSrc="Categories.aspx"
Runat="Server"/>
</form>
</body>
</html>Categories.aspx
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %><Script runat="Server">
sub page_load
Dim mycon as SqlConnection
Dim cmdCategories As SqlCommand
Dim dsCategories As DataSet
Dim strQuery As String mycon=New Sqlconnection("Server=localhost;UID=sa;PWD=secret;Database=Northwind")
strQuery="select categoryname as Text,'products.aspx?catid='
+LTRIM(STR(CategoryID))" & _
"As TreeNodeSrc from Categories As TreeNode for xml auto, XMLDATA"
cmdCategories=new SqlCommand(strQuery,mycon)
dsCategories=New DataSet
dsCategories.ReadXML(cmdCategories.ExecuteXmlReader(),XmlReadMode.Fragment)
dsCategories.DataSetName="TREENODES"
dsCategories.WriteXml(Response.OutputStream)
end sub
</script>Products.aspx
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %><Script runat="Server">
sub page_load
Dim mycon as SqlConnection
Dim cmdProducts As SqlCommand
Dim dsProducts As DataSet
Dim strQuery As String mycon=New Sqlconnection("Server=localhost;UID=sa;PWD=secret;Database=Northwind")
strQuery="select Productname as Text from products As TreeNode" & _
" where CategoryID=@categoryID for xml auto, XMLDATA "
cmdproducts=new SqlCommand(strQuery,mycon)
cmdproducts.Parameters.Add(New SqlParameter("@categoryID",Request.QueryString("catID")))
mycon.open()
dsproducts=New DataSet
dsproducts.ReadXML(cmdproducts.ExecuteXmlReader(),XmlReadMode.Fragment)
dsproducts.DataSetName="TREENODES"
dsproducts.WriteXml(Response.OutputStream)
mycon.close()
end sub
</script>
最好是vb.net代码
我这里也有这个代码
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
Dim node As TreeNode = New TreeNode
Dim myrd As OleDbDataReader
conn.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=" & Server.MapPath("dataset.mdb")
CreateDataset()
nodeadd("0", TreeView1.Nodes)
End Sub
Sub nodeadd(ByVal parentid As Integer, ByRef pnode As TreeNodeCollection)
Dim dvtree As DataView = New DataView
dvtree.Table = mydataset.Tables("teble")
dvtree.RowFilter = "seedid='" & parentid & "'"
Dim rows As DataRowView
Dim tmpnd As TreeNode
Dim strid As String
For Each rows In dvtree
tmpnd = New TreeNode
tmpnd.ID = rows("id")
tmpnd.Text = rows("parent")
'tmpnd.ImageUrl = ""
Dim strs As String = "index.aspx?id=" & tmpnd.Text
tmpnd.NavigateUrl = strs
pnode.Add(tmpnd)
strid = rows("id").ToString
nodeadd(tmpnd.ID, tmpnd.Nodes)
Next End Sub
Private Sub CreateDataset()
If conn.State = ConnectionState.Closed Then
conn.Open()
cmd.Connection = conn
cmd.CommandText = "select * from mydataset"
cmd.CommandType = CommandType.Text
mycmd = New OleDbDataAdapter(cmd)
mycmd.Fill(mydataset, "teble")
End If
If conn.State = ConnectionState.Open Then
conn.Close()
End If
If Not cmd Is Nothing Then
cmd.Dispose()
End If
If Not mycmd Is Nothing Then
mycmd.Dispose()
End If
End Sub
如何实现3层4层的树了.
给你一个我的例子 Private Sub LoadNode(ByRef treeview As Microsoft.Web.UI.WebControls.TreeView, ByRef tvwNode As Microsoft.Web.UI.WebControls.TreeNode, ByVal strsql As String, ByVal strJH As String)
'使用递归的方法生成目录树
Dim cnn As New OracleConnection(G_strCnn)
Dim rd As OracleDataReader
Dim cmd As New OracleCommand(strsql, cnn)
Dim strsubsql As String
Try
cnn.Open()
rd = cmd.ExecuteReader
While rd.Read
Dim trvsubNode As New Microsoft.Web.UI.WebControls.TreeNode
trvsubNode.NodeData = rd.Item("NODEID") & ""
If Not (rd.IsDBNull(6)) Then
trvsubNode.ExpandedImageUrl = "../" & rd.Item("NODEEXPIMAGE")
End If
trvsubNode.DefaultStyle.Add("color", "#ffffff")
trvsubNode.Text = rd.Item("NODETEXT") & ""
If (rd.IsDBNull(2)) Then
' trvsubNode.ImageUrl = "images/homepage/menu/movearrow01.gif"
Else
trvsubNode.ImageUrl = "../" & rd.Item("NODEIMAGE") & ""
End If
If rd.IsDBNull(4) Then
trvsubNode.Target = "main"
Else
trvsubNode.Target = rd.Item("NODETARGETTYPE") & ""
End If
If Not rd.IsDBNull(3) Then
trvsubNode.NavigateUrl = rd.Item("NODETARGET") & strJH
End If Try
If tvwNode Is Nothing Then
treeview.Nodes.Add(trvsubNode)
Else
tvwNode.Nodes.Add(trvsubNode)
End If
Catch ex As Exception End Try
strsubsql = "Select NODEID,NODETEXT,NODEIMAGE,NODETARGET,NODETARGETTYPE,ZYPARENTNODEID,NODEEXPIMAGE,nodetype,nodevisible,NODESY From JSYS_101A Where NODEVISIBLE<>0 and ZYPARENTNODEID='" & rd.Item("NODEID") & "' order by ZYNODESORTE "
Call LoadNode(treeview, trvsubNode, strsubsql, strJH)
End While
Catch ex As Exception
Response.Write(ex.ToString)
Finally
cmd.Dispose()
rd.Close()
rd.Dispose()
cnn.Close()
cnn.Dispose()
End Try
End Sub