treeview绑定到一个XML文件,
在页面上有一个textbox、添加按钮、删除按钮(在节点上选择了checkbox进行的)
但是我点击添加按钮或删除的时候,treeview有时没有重新绑定,
得点击两次添加或删除treeview才重新绑定
,(但是有时一次就可以),下面是代码:
帮我看看哪里出问题
  protected void Page_Load(object sender, EventArgs e)
    {
        Response.Expires = 0;
        if (!IsPostBack)
        {
           ReaderXmlData();
            TreeBind();
         }       
    }
protected void btnAdd_Click(object sender, EventArgs e)
    {
        if (tvnode.CheckedNodes.Count > 0)     //对选中checkbox节点添加
        {
         foreach (TreeNode tn in tvnode.CheckedNodes)
            {
               XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(Server.MapPath("~/xml/" + stranalysisid + ".xml"));
                StringBuilder XPathStr = new StringBuilder("");
                XmlNode node = xmlDoc.SelectSingleNode(tn.ValuePath.Replace("大盘分析如下:", "root"));
                 XmlElement xesub1 = xmlDoc.CreateElement((tbnode.Text));                 ((XmlElement)node).AppendChild(xesub1);//添加节点
                 xmlDoc.Save(Server.MapPath("~/xml/" + stranalysisid + ".xml"));//这时调试的时候XML文件已经改变,但是页面显示的时候并没有刷新                 tbnode.Text = "";
                }
            }
        }
    TreeBind();
    }
    private void TreeBind()
     {         
        string strxm_name = "~/xml/"+stranalysisid+".xml";//是以根节点来命名的XML
        XmlDataSource1.DataFile = strxm_name;
        tvnode.DataSource = XmlDataSource1;
        tvnode.DataBind();
        XmlDataSource1.EnableCaching=false; 
        CheckTree(tvnode.Nodes[0]);
     }

解决方案 »

  1.   

    1、确认你的代码是否真的执行了?
    2、使用跳转试试看能否解决问题,跳转的url上加一个随机数;
      

  2.   

    protected void btnAdd_Click(object sender, EventArgs e) 
        { 
            if (tvnode.CheckedNodes.Count > 0)    //对选中checkbox节点添加 
            { 
            foreach (TreeNode tn in tvnode.CheckedNodes) 
                { 
                  XmlDocument xmlDoc = new XmlDocument(); 
                    xmlDoc.Load(Server.MapPath("~/xml/" + stranalysisid + ".xml")); 
                    StringBuilder XPathStr = new StringBuilder(""); 
                    XmlNode node = xmlDoc.SelectSingleNode(tn.ValuePath.Replace("大盘分析如下:", "root")); 
                    XmlElement xesub1 = xmlDoc.CreateElement((tbnode.Text));                 ((XmlElement)node).AppendChild(xesub1);//添加节点 
                    xmlDoc.Save(Server.MapPath("~/xml/" + stranalysisid + ".xml"));//这时调试的时候XML文件已经改变,但是页面显示的时候并没有刷新                tbnode.Text = ""; 
                    } 
                } 
            } 
        TreeBind(); 
        } 
        private void TreeBind() 
        {        
            
    string strxm_name = "~/xml/"+stranalysisid+".xml?"+DateTime.Now.ToString();//是以根节点来命名的XML
    tvnode.Nodes.Clear();
     

            XmlDataSource1.DataFile = strxm_name; 
            tvnode.DataSource = XmlDataSource1; 
            tvnode.DataBind(); 
            XmlDataSource1.EnableCaching=false; 
            CheckTree(tvnode.Nodes[0]); 
        } 
      

  3.   

     private void TreeBind() 
        {        
            string strxm_name = "~/xml/"+stranalysisid+".xml";//是以根节点来命名的XML 
    XmlDataSource1.Clear();
            XmlDataSource1.DataFile = strxm_name; 
            tvnode.DataSource = XmlDataSource1; 
            tvnode.DataBind(); 
            XmlDataSource1.EnableCaching=false; 
            CheckTree(tvnode.Nodes[0]); 
        } 
      

  4.   

    System.Web.UI.WebControls.XmlDataSource”并不包含“clear”的定义
      

  5.   

    private void TreeBind() 
        {        
            string strxm_name = "~/xml/"+stranalysisid+".xml";//是以根节点来命名的XML 
    XmlDataSource1.EnableCaching=false;  
            XmlDataSource1.DataFile = strxm_name; 
            tvnode.DataSource = XmlDataSource1; 
            tvnode.DataBind(); 
            CheckTree(tvnode.Nodes[0]); 
        }