那里有关于treeview控件的具体用法?
和数据库有关的使用,
就是想和数据库进行绑定,然后点击弹出一个页面,就象csdn论坛左面的一样。
给点具体的资料或者连接,让我自己看也可以啊!
添加节点等这些简单的已经会了。
多谢!
和数据库有关的使用,
就是想和数据库进行绑定,然后点击弹出一个页面,就象csdn论坛左面的一样。
给点具体的资料或者连接,让我自己看也可以啊!
添加节点等这些简单的已经会了。
多谢!
调试欢乐多
{
for(j=0;j<=Treeview1.Nodes.Count;j++)
{
if(ds.Tables["bbs_config"].Rows[i][0].ToString()==TreeView.Nodes[j].NodeData)
{
TreeNode cnd=new TreeNode();
cnd.Text=ds.Tables["bbs_config"].Rows[i][0].ToString();
cnd.NavigateUrl="";
cnd.NodeData=ds.Tables["bbs_config"].Rows[i][0].ToString();
Treeview1.Nodes[j].Add(cnd);
}
}
}
显示if...这一行错误:
编译器错误信息: CS0120: 非静态的字段、方法或属性“Microsoft.Web.UI.WebControls.TreeView.Nodes”要求对象引用怎么解决?
http://msdn.microsoft.com/downloads/samples/internet/ASP_DOT_NET_ServerControls/WebControls/default.asp
下载后是后缀为bat的版本
(1)bulid.将bulid.bat的路径指向csc.exe所在路径,生成Microsoft.Web.UI.WebControls.dll。
(2)在wwwroot下创建空目录webctrl_client\1_0。
(3)将build\Runtime下的文件拷至webctrl_client\1_0下。
(4)选择工具箱的自定义工具箱,添加Microsoft.Web.UI.WebControls.dll。
有些麻烦
但如果你能找到后缀是msi的自动安装版本,直接下一步就行(我一直用这个版本,hoho)
安装后,通过“自定义工具箱”->“.net框架组件”把TreeView添加到工具箱里2.运行时无法显示
一般是TreeView的版本问题,最好下载英文版自动安装版本重新安装,安装前应该先到添加删除程序里卸掉原版本3.显示格式出错(非树状显示)
TreeView要求客户端浏览器版本为IE5.5及以上,最好要求客户端升级为IE6.04.框架里使用TreeView
设置NavigateUrl、Target属性,可更新另外的Frame5.找不到TreeNode类
使用TreeView,最好添加namespace:using Microsoft.Web.UI.WebControls;6.遍历TreeView节点(递归算法)
private void Page_Load(object sender, System.EventArgs e)
{
GetAllNodeText(TreeView1.Nodes);
}
void GetAllNodeText(TreeNodeCollection tnc)
{
foreach(TreeNode node in tnc)
{
if(node.Nodes.Count!=0)
GetAllNodeText(node.Nodes);
Response.Write(node.Text + " ");
}
}7.得到node结点的父节点
TreeNode pnode;
if(node.Parent is TreeNode)
pnode=(TreeNode)node.Parent;
else
//node is root node8.修改TreeView样式(示例)
<iewc:TreeView id="TreeView1" runat="server" HoverStyle="color:blue;background:#00ffCC;" DefaultStyle="background:red;color:yellow;" SelectedStyle="color:red;background:#00ff00;">
用代码:
TreeView1.DefaultStyle["font-size"] = "20pt";
将autopostback设置成false;
在body里添加 <body onload="initTree()">
然后在PageLoad里写:
string strTreeName = "TreeView1";
string strRef = Page.GetPostBackEventReference(TreeView1);
string strScript = "<script language=\"JavaScript\"> \n" + "<!-- \n" + " function initTree() { \n" +" " + strTreeName + ".onSelectedIndexChange = function() { \n" + "if (event.oldTreeNodeIndex !=
event.newTreeNodeIndex) \n" + "this.queueEvent('onselectedindexchange', event.oldTreeNodeIndex + ',' + event.newTreeNodeIndex); \n" + "window.setTimeout('" + strRef.Replace("'","file://'/") + "', 0, 'JavaScript'); \n" + " } \n" + " } \n" + "// --> \n" + "</script>";
Page.RegisterClientScriptBlock("InitTree",strScript );
这样就只有你点击的节点更改的时候才提交!10.TreeView结合XML
把XML文件设置为如下格式,然后直接设置TreeNodeSrc为该XML文件就行
<?xml version="1.0" encoding="GB2312"?>
<TREENODES>
<TREENODE TEXT="node0" EXPANDED="true">
<TREENODE TEXT="node1"/>
<TREENODE TEXT="node2"/>
</TREENODE>
<TREENODE TEXT="node3" NavigateURL="3.aspx"/>
</TREENODES>
或者用代码
TreeView1.TreeNodeSrc="a.xml";
TreeView1.DataBind(); 客户端控制TreeView
http://expert.csdn.net/Expert/topic/1382/1382892.xml1.设置所选节点,如选中第二个节点
function SetSelNode()
{
TreeView1.selectedNodeIndex="1";
}2.得到所选节点的Text,ID或NodeData
function GetAttribute()
{
alert(TreeView1.getTreeNode(TreeView1.selectedNodeIndex).getAttribute("Text"));
}
替换Text为ID或NodeData,可分别得到所选节点的ID或NodeData3.修改节点属性,如修改第一个节点的Text
function ModifyNode()
{
var node=TreeView1.getTreeNode("0");
node.setAttribute("Text","hgknight");
}4.得到点击节点
function TreeView1.onclick()
{
alert(TreeView1.getTreeNode(TreeView1.clickedNodeIndex).getAttribute("Text"));
}5.添加节点
function AddNode()
{
var node=TreeView1.createTreeNode();
node.setAttribute("Text","hgknight");
TreeView1.add(node);
}6.js遍历所有节点
var AllRootNode=new Array();
AllRootNode=TreeView1.getChildren();
AlertNode(AllRootNode); function AlertNode(NodeArray)
{
if(parseInt(NodeArray.length)==0)
return;
else
{
for(i=0;i<NodeArray.length;i++)
{
var cNode;
cNode=NodeArray[i];
alert(cNode.getAttribute("Text"));
if(parseInt(cNode.getChildren().length)!=0)
AlertNode(cNode.getChildren());
}
}
}
一、数据库设计BBS_BestArticleFolder 精华区目录表
Key: FolderID
Field name
Type
Length
Default
Description
FolderID
int
4
ID(自动编号)
ParentFolderID
int
4
0
父目录ID
FolderName
Nvarchar
80
目录名
BoardID
int
4
0
版块ID
CreaterUserID
int
4
0
创建者ID
AddTime
DateTime
8
GetDate()
创建时间
二、树型目录构建过程1、安装TreeView控件,我想大多数人都是会安装的,不会安装的去找相关文章一下下。2、具体实现:a 数据生成 #region 树的数据生成事件 private DataView CreateDateView(int boardID) { BBSBestArticleFolderCollection bafc=new BBSBestArticleFolderCollection(); bafc.GetInfoByParentFolderID(boardID,-1); int bafcCount=bafc.Count; DataTable dt = new DataTable("table"); dt.Columns.Add("FolderID",System.Type.GetType("System.String")); dt.Columns.Add("FolderName",System.Type.GetType("System.String")); dt.Columns.Add("ParentFolderID",System.Type.GetType("System.String")); for(int i=0;i<bafcCount;i++) { DataRow dr=dt.NewRow(); dr[0]=bafc[i].ID; dr[1]=bafc[i].FolderName; dr[2]=bafc[i].ParentFolderID; dt.Rows.Add(dr); } dv=dt.DefaultView; return dv; } #endregion一点说明:BBSBestArticleFolderCollection对象是个集合类,里面存储了所有符合条件的数据集合,GetInfoByParentFolderID是其中的一个方法,根据一定条件填充集合类的,此文主要讲TreeView构建树型目录,此处会在另外的文章中详述。 b #region TreeView节点生成方法 private void CreateTree(TreeNodeCollection folderTreeNodeCollection ,int parentID) { dv.RowFilter= "ParentFolderID="+parentID; int tmpParentFolderID=0; foreach(DataRowView drv in dv) { TreeNode tn=new TreeNode(); tn.ID=drv.Row["FolderID"].ToString(); tn.Text=drv.Row["FolderName"].ToString().Trim(); tmpParentFolderID=Int32.Parse(drv.Row["ParentFolderID"].ToString().Trim()); //tn.CheckBox=true; folderTreeNodeCollection.Add(tn); CreateTree(folderTreeNodeCollection[folderTreeNodeCollection.Count - 1].Nodes,Int32.Parse(tn.ID)); } } 一点解释:递归构建树的各级节点,其中的dv就是上一个方法生成的DataView c 取得数据的方法有了,生节节点的方法也有了,那么剩下的就是调用了 CreateTree(TreeView1.Nodes,0); 一点解释:TreeView1是控件ID,这个大家都知道吧,这里的0其实就是表示顶级目录,从顶级目录递归调用下去DI。
因为你我的donet控件使用又多一个了。
多谢,多谢!!
谢谢