C# 停止树视图节点上的回发单击

C# 停止树视图节点上的回发单击,c#,asp.net,treeview,postback,C#,Asp.net,Treeview,Postback,我遵循本教程,允许用户从其计算机中选择文件夹: 问题是每次我点击一个节点,它都会调用postback,刷新页面。那么,我如何避免每次回邮都被呼叫 <asp:TreeView ID="TreeView1" runat="server" Height="326px" ImageSet="XPFileExplorer" NodeIndent="15" Width="292px">

我遵循本教程,允许用户从其计算机中选择文件夹:

问题是每次我点击一个节点,它都会调用postback,刷新页面。那么,我如何避免每次回邮都被呼叫

<asp:TreeView ID="TreeView1" runat="server" Height="326px" ImageSet="XPFileExplorer"
                                            NodeIndent="15" Width="292px">
                                            <ParentNodeStyle Font-Bold="False" />
                                            <HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
                                            <SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False" HorizontalPadding="0px"
                                                VerticalPadding="0px" />
                                            <NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black" HorizontalPadding="2px"
                                                NodeSpacing="0px" VerticalPadding="2px" />
                                            <LeafNodeStyle  ImageUrl="../images/folder.gif" />
                                        </asp:TreeView>

代码隐藏:

protected void Page_Load(object sender, EventArgs e)
    {
    if (!Page.IsPostBack)
            {
                TreeNode onjParent = new TreeNode("C:\\", "C:\\");
                onjParent.PopulateOnDemand = true;
                TreeView1.Nodes.Add(onjParent);

                TreeView1.CollapseAll();
            }

            error.Visible = false;
            TreeView1.TreeNodeExpanded += new TreeNodeEventHandler(TreeView1_TreeNodeExpanded);
            TreeView1.SelectedNodeChanged += new EventHandler(TreeView1_SelectedNodeChanged);
        }

    void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
        {
            _browseTextBox.Text = TreeView1.SelectedValue;
        }

        void TreeView1_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
        {
            if (e.Node.Value.EndsWith("\\"))
            {
                AddNodes(e.Node.Value, e.Node);
            }


        }
        private TreeNode AddNodes(string path, TreeNode parentNode)
        {
            FileList objList = new FileList(path, "*.*");
            TreeNode node = new TreeNode(path, path);
            for (int index = 0; index < objList.Directories.Length; index++)
            {
                string directory = objList.Directories[index];
                TreeNode objChildNode = new TreeNode(directory, path + "\\" + directory + "\\");
                objChildNode.PopulateOnDemand = true;
                objChildNode.Target = "_blank";

                parentNode.ChildNodes.Add(objChildNode);
            }
            foreach (string file in objList.Files)
            {
                TreeNode objChildNode = new TreeNode(file, path + "\\" + file);
                parentNode.ChildNodes.Add(objChildNode);
            }
            return node;
        }


        protected void _browseButton_Click(object sender, ImageClickEventArgs e)
        {
            TreeView1.Nodes.Clear();
            if (UpdateBrowseTextBoxWithSlash())
            {

                TreeNode onjParent = new TreeNode(_browseTextBox.Text, _browseTextBox.Text);
                onjParent.PopulateOnDemand = true;
                TreeView1.Nodes.Add(onjParent);

                TreeView1.CollapseAll();
            }
            else
            {
                error.Visible = true;
                error.Text = "Please Enter valid path";
            }
        }

        private bool UpdateBrowseTextBoxWithSlash()
        {
            if (_browseTextBox.Text.Length != 0)
            {
                if (
                        -1 == _browseTextBox.Text.LastIndexOf(".") &&
                        !_browseTextBox.Text.Substring(_browseTextBox.Text.Length - 1, 1).Equals("/") &&
                        !_browseTextBox.Text.Substring(_browseTextBox.Text.Length - 1, 1).Equals("\\")
                    )
                {
                    if (_browseTextBox.Text.Substring(0, 1).Equals("\\") || -1 != _browseTextBox.Text.IndexOf(":\\"))
                        _browseTextBox.Text += "\\";
                    else
                        _browseTextBox.Text += "/";
                    return System.IO.Directory.Exists(_browseTextBox.Text);
                }
                else if (_browseTextBox.Text.LastIndexOf(".") > 0)
                {
                    return System.IO.File.Exists(_browseTextBox.Text);
                }
            }
            return true;
        }
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!Page.IsPostBack)
{
TreeNode onjParent=新的TreeNode(“C:\\”,“C:\\”;
onjParent.PopulateOnDemand=true;
TreeView1.Nodes.Add(onjParent);
TreeView1.CollapseAll();
}
错误。可见=错误;
TreeView1.TreeNodeExpanded+=新的treenodeventhandler(TreeView1_TreeNodeExpanded);
TreeView1.SelectedNodeChanged+=新事件处理程序(TreeView1_SelectedNodeChanged);
}
void TreeView1_SelectedNodeChanged(对象发送方,事件参数e)
{
_browseTextBox.Text=TreeView1.SelectedValue;
}
void TreeView1_TreeNodeExpanded(对象发送方,TreeNodeEventArgs e)
{
if(e.Node.Value.EndsWith(“\\”)
{
添加节点(e.Node.Value,e.Node);
}
}
私有树节点AddNodes(字符串路径,树节点parentNode)
{
FileList objList=新文件列表(路径,*.*);
树节点=新树节点(路径,路径);
for(int index=0;index
你看过吗?作者提供了一个有趣的想法,通过手动设置每个树节点的NavigateUrl和SelectAction,在选择节点时省略回发。乍一看,这似乎合乎逻辑。唯一缺少的是它不是递归的,因此一次只能处理一个节点级别

也许你可以用updatepanel@KushalVora你能展示一些如何做的代码吗?