modernsky2003

Asp.net 2.0 Treeview 无限级无刷新示例 在运行时添加控件.

<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<script runat="server">

    
void Treeview1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
    
{
       
if (IsCallback)
            
if (e.Node.ChildNodes.Count == 0)
            
{
                LoadChildNode(e.Node);
            }

       
    }


    private 
void LoadChildNode(TreeNode node)
    
{
        
        DirectoryInfo directory;
        directory 
= new DirectoryInfo(node.Value);      

        foreach (DirectoryInfo sub 
in directory.GetDirectories())
        
{
         
            TreeNode subNode 
= new TreeNode(sub.Name);
            subNode.Value 
= sub.FullName;

            
try
            
{
                
if (sub.GetDirectories().Length > 0 || sub.GetFiles().Length > 0)
                
{
                    subNode.SelectAction 
= TreeNodeSelectAction.SelectExpand;
                    subNode.PopulateOnDemand 
= true;
                    subNode.NavigateUrl 
= "#";
                }

            }

            
catch { subNode.ImageUrl = "WebResource.axd?a=s&r=TreeView_XP_Explorer_ParentNode.gif&t=632242003305625000"; }
            node.ChildNodes.Add(subNode);
            
        }


        foreach (FileInfo fi 
in directory.GetFiles())
        
{
            TreeNode subNode 
= new TreeNode(fi.Name);
            node.ChildNodes.Add(subNode);
        }

    }

    
    
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>Untitled Page</title>
</head>

<body bgcolor="white">
    
<form id="form1" runat="server">
    
<div>
    
<asp:treeview ID="Treeview1" runat="server" ImageSet="XPFileExplorer" AutoGenerateDataBindings="false" ExpandDepth=0 
        
OnTreeNodePopulate="Treeview1_TreeNodePopulate"
    
>
        
<SelectedNodeStyle BackColor="#B5B5B5"></SelectedNodeStyle>
        
<Nodes>
            
<asp:TreeNode Value="C:" Text="C:" PopulateOnDemand="true" SelectAction="Select" NavigateUrl="#" >
            
</asp:TreeNode>
        
</Nodes>
        
<NodeStyle VerticalPadding="2" Font-Names="Tahoma" Font-Size="8pt" HorizontalPadding="2"
            ForeColor
="Black"></NodeStyle>
        
<HoverNodeStyle Font-Underline="True" ForeColor="#6666AA"></HoverNodeStyle>
    
</asp:treeview>
    
</div>
    
</form>
</body>
</html>


本示例在运行时将文本框和按钮添加到 Web 窗体页。它还将事件处理程序动态绑定到按钮的 Click 事件。该处理程序会显示动态生成的文本框的值。

这些控件被添加到 Panel Web 服务器控件中,该控件是一个占位符。在面板中使用分行符(HTML <BR> 元素)来分隔这些控件,它们被添加到使用 LiteralControl 控件的面板中。

示例
private void Page_Load(object sender, System.EventArgs e)
{
    if (!IsPostBack)
        AddControls();
}

protected override void LoadViewState(object savedState)
{
    base.LoadViewState(savedState);
    if (ViewState["controsladded"] == null)
    AddControls();
}

private void AddControls()
{
    TextBox dynamictextbox = new TextBox();
    dynamictextbox.Text = "(Enter some text)";
    dynamictextbox.ID = "dynamictextbox";
    Button dynamicbutton = new Button();
    dynamicbutton.Click += new System.EventHandler(dynamicbutton_Click);
    dynamicbutton.Text = "Dynamic Button";
    Panel1.Controls.Add(dynamictextbox);
    Panel1.Controls.Add(new LiteralControl("<BR>"));
    Panel1.Controls.Add(new LiteralControl("<BR>"));
    Panel1.Controls.Add(dynamicbutton);
    ViewState["controlsadded"] = true;
}

private void dynamicbutton_Click(Object sender, System.EventArgs e)
{
    TextBox tb = new TextBox();
    tb = (TextBox) (Panel1.FindControl("dynamictextbox"));
    Label1.Text = tb.Text;
}





posted on 2008-05-30 14:44  hekeneng  阅读(303)  评论(0编辑  收藏  举报

导航