treeview控件一些操作

  

TreeView 控件关键属性

CheckedNodes                 声明被选择的单个或者多个节点
ExpandDepth                   
声明TreeView控件展开的深度
Nodes                               TreeNodeCollection 
类型的节点集合
SelectedNode                  
当前被选择的节点
ShowCheckBoxes           
声明是否显示复选框
ShowExpandCollapse    
声明展示/折叠状态
ShowLines                     
声明节点间是否以线连接
LevelStyles                    
指定每个层次的节点的样式
NodeStyle                      
指定节点的默认样式
RootNodeStyle              
指定根节点的样式
LeafNodeStyle               
指定子节点的样式
SelectedNodeStyle        
指定选定节点的样式
HoverNodeStyle           
指定当鼠标移在节点上方时的样式
ImageUrl properties       
指定表示展开/折叠的图片的URL路径

TreeNode关键属性

Checked                             标明节点上的复选框的选择状态
ImageUrl                            
标明节点上所用图片的URL路径
NavigateUrl                      
当单击节点时所要导航到的URL路径
SelectAction                     
无导航节点被单击时所要执行的动作
Selected                            
标明当前节点是否被选择的节点
ShowCheckBox                
标明当前节点是否显示复选框
Text                                   
节点上的文字

TreeView 事件

CheckChanged               当复选框被选择或者清除选择时的所触发的事件
SelectedNodeChanged  
当选择的节点发生改变时所触发的事件
TreeNodeCollapsed       
当分支被折叠时所触发的事件
TreeNodeExpanded       
当分支被展开时所触发的事件
TreeNodeDataBound    
当节点被绑定到数据源时所触发的事件
TreeNodePopulate*       Fired when a PopulateOnDemand node needs content
* Only fired on server if EnableClientScript="false"

使用 SelectedNodeChanged事件

<asp:TreeView ID="Tree" OnSelectedNodeChanged="OnUpdate" RunAt="server">
  
<Nodes>
    
  
</Nodes>
</asp:TreeView>
  .
  .
  .
<script language="C#" runat="server">
void OnUpdate (Object sender, EventArgs e)
{
    
// Get the text of the selected node
    string text = Tree.SelectedNode.Text;
      
}
</script>

按需装载节点

<asp:TreeView OnTreeNodePopulate="OnPopulate" EnableClientScript="false"
  RunAt
="server">
  
<Nodes>
    
<asp:TreeNode Text="Populate this node on demand"
      PopulateOnDemand
="true" RunAt="server" />
  
</Nodes>
</asp:TreeView>
  .
  .
  .
<script language="C#" runat="server">
void OnPopulate (Object sender, TreeNodeEventArgs e)
{
    
// Called first time the populate-on-demand node is expanded
    TreeNode node = new TreeNode ("This node added dynamically");
    e.Node.ChildNodes.Add (node);
}
</script>




   
private void BindTree()
    
{
        DataSet dst = GetTreeViewData();
        TreeView1.ShowCheckBoxes = TreeNodeTypes.All;
        
foreach (DataRow masterRow in dst.Tables["province"].Rows)
        
{
            TreeNode masterNode = 
new TreeNode((string)masterRow["province"]);
            TreeView1.Nodes.Add(masterNode);
            
foreach (DataRow childRow in masterRow.GetChildRows("Children"))
            
{
                TreeNode childNode =
new TreeNode((string)childRow["city"]);
                masterNode.Expanded = 
false;
                masterNode.ChildNodes.Add(childNode);
            }
        }
    }

    private void InitTree()
    
{
        DataTable dt = GetTreeViewTable();
        DataView dv = 
new DataView(dt);
        dv.RowFilter = "ParentID=0";
        TreeView1.ShowCheckBoxes = TreeNodeTypes.All;
        
foreach (DataRowView drv in dv)
        
{
            TreeNode node = 
new TreeNode();
            node.Text = drv["text"].ToString();
            node.Value = drv["ID"].ToString();
            node.Expanded = 
false;
            TreeView1.Nodes.Add(node);
            AddReplies(dt,node);
        }
    }

     private DataTable GetTreeViewTable()
    
{
        
string constring = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
        SqlConnection con = 
new SqlConnection(constring);
        SqlDataAdapter da = 
new SqlDataAdapter("SELECT * FROM treeview", con);
        DataTable dt = 
new DataTable();
        da.Fill(dt);
        
return dt;
    }

     private void AddReplies(DataTable dt, TreeNode node)
    
{
        DataView dv = 
new DataView(dt);
        dv.RowFilter = "ParentID='" + node.Value + "'";
        
foreach (DataRowView row in dv)
        
{
            TreeNode replyNode = 
new TreeNode();
            replyNode.Text = row["text"].ToString();
            replyNode.Value = row["ID"].ToString();
            replyNode.Expanded = 
false;
            node.ChildNodes.Add(replyNode);
            AddReplies(dt,replyNode);
        }
    }



如何判断 TreeView 的一个节点下是否有子节点???

if(selNode.Nodes.Count==0){
//
该节点没有字节点
}

如何得到 TreeView 的当前选择节点???

1.Tree.GetNodeFromIndex(Tree.SelectedNodeIndex.ToString())
2.private void TreeView1_SelectedIndexChange(object sender,
Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
e.NewNode
即为所选节点


private void TreeView1_SelectedIndexChange(object sender,
Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
{
TreeNode NewNode=TreeView1.GetNodeFromIndex
(TreeView1.SelectedNodeIndex);
string strNodeId=NewNode.ID .ToString ();
SqlDataReader dr;
SqlCommand myCommand;
int intVOrderLen=strNodeId.Length+2;
string strSel = "select * from bas_enterprise where
len(vieworder)="+intVOrderLen+" and vieworder like '%"+strNodeId+"__%'
order by vieworder";
myCommand = new SqlCommand (strSel, myConnection);
dr=myCommand.ExecuteReader();
NewNode.Nodes .Clear();
while (dr.Read ())
{
TreeNode pNode=new TreeNode ();
pNode.Text =dr["EntpName"].ToString ();
pNode.ID =dr["ViewOrder"].ToString ();
NewNode.Nodes.Add (pNode);
}
dr.Close ();

treeview中如何查找一个值,并选中它?

问题:
各位,在已经建好的树中如何查找一个文本或者是treenodesid,找到后选中它?

答案:
for(int i=0;i<TreeView1.Nodes.Count;i++)
if(TreeView1.Nodes[i]==TextBox1.Text)
{
string index1=TreeView1.Nodes[i].GetNodeIndex();//
取得index
TreeView1.SelectedNodeIndex=index1;
    }



 

如何取得TreeView中各项的值??

private void TreeView1_SelectedIndexChange(object sender,
Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
{
Microsoft.Web.UI.WebControls.TreeNode
NewNode=TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex);
Label1.Text =NewNo

如果通过代码要在父结点中增加子节点,代码如何实现?
父节点代码如下:
TreeNode pNode = new TreeNode();
pNode.ID = "Root";
pNode.Text = strNodeName;
TreeView1.Nodes.Add(pNode);
如果要在根结点"Root"下面再增加子节点,如何写代码?
TreeView1.Nodes.AddAt(pNode);
这种方式好象不行.
TreeView1.Nodes[0].Nodes.Add(pNewNode);

TreeView常用操作

最近做的项目用到了微软的树控件,所以我总结了部分树控件的用法。

遍历节点
void GetAllNodeText(TreeNodeCollection tnc)
{
 foreach(TreeNode node in tnc)
 {
  if(node.Nodes.Count!=0)
   GetAllNodeText(node.Nodes);
  Response.Write(node.Text + " ");
 }
}

建树
private void CreateTree(TreeNodeCollection folderTreeNodeCollection , string parentID)
{
  if (parentID=="")
  {
    dv.RowFilter= "ParentID is null";
  }
  else
  {
    dv.RowFilter= "ParentID="+"'"+parentID+"'";
  }
  foreach (DataRowView drv in dv)
  {
    TreeNode tn= new TreeNode();
    tn.Expanded= true ;
    tn.ID=drv.Row["TypeID"].ToString().Trim();
    tn.Text=drv.Row["TypeName"].ToString().Trim();
    folderTreeNodeCollection.Add(tn);
    CreateTree(tn.Nodes,tn.ID);
  }
}

遍历选中节点
private void getAllCheckedNode(TreeNodeCollection tnc)
{
  foreach (TreeNode tn in tnc)
  {
    if (tn.Checked== true )
    {
      Response.Write(tn.Text+””);
    }
    if (tn.Nodes.Count>0)
    {
      getAllCheckedNode(tn.Nodes);
    }
  }
}

选中或取消选中节点 , 自动选中或取消选中期子节点
private void CheckedChildNode(TreeNode tn)
{
  if (tn.Nodes.Count>0)
  {
    foreach (TreeNode tnn in tn.Nodes)
    {
      tnn.Checked=tn.Checked;
      CheckedChildNode(tnn);
    }
  }
}

调用方法
private void TreeView1_Check( object sender, Microsoft.Web.UI.WebControls.TreeViewClickEventArgs e)
{
    setAllCheckedNode(TreeView1.GetNodeFromIndex(e.Node));
}



========================================
TreeView读取数据库结点

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using clsTreeViewName;

public partial class TreeNode读取数据库_TreeContral : System.Web.UI.UserControl
{
    DataView dv = new DataView();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindTreeView();
            TreeView1.ExpandDepth = 0;
            Response.Write("fffffffff");
            TreeView1.CollapseAll();
        }
    }
    void BindTreeView()
    {
        string sql = "select * from DropDownList";
        clsTreeViewName.clsTreeView ctv = new clsTreeView();
        dv = ctv.selectDs(sql).Tables[0].DefaultView;

        foreach (DataRowView i in dv)
        {
            if (i["fatherId"].ToString() == "0")
            {
                TreeNode tn = new TreeNode();
                tn.Text = i["stateName"].ToString();
                tn.Value = i["stateId"].ToString();
                tn.NavigateUrl = i["url"].ToString();
                TreeView1.Nodes.Add(tn);
               
                CreateChildNode(tn);            
            }
        }
    }
    void CreateChildNode(TreeNode t)
    {
        foreach (DataRowView i in dv)
        {
            if (i["fatherId"].ToString() == t.Value.ToString())
            {
                TreeNode tn2 = new TreeNode();
                tn2.Text = i["stateName"].ToString();
                tn2.Value = i["stateId"].ToString();
                tn2.NavigateUrl = i["url"].ToString();
                t.ChildNodes.Add(tn2);
                CreateChildNode(tn2);
                TreeView1.ShowLines = true;              
             }
        }
    }


posted on 2007-07-28 21:08  Wenguan  阅读(885)  评论(0)    收藏  举报

导航