TreeView和Xml做数据源的一些编辑、插入、删除操作(更新)

更新后直接上代码:
ContractedBlock.gif ExpandedBlockStart.gif Code
protected void fvDataBind()
ExpandedBlockStart.gifContractedBlock.gif    
{
        
if (TreeView1.SelectedNode != null)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
string path = TreeView1.SelectedNode.DataPath;
            
int depth = TreeView1.SelectedNode.Depth;
            XmlDataSource2.XPath 
= path;
            FormView1.DataSource 
= XmlDataSource2;
            FormView1.DataBind();
            Label1.Text 
= "";
        }

        
else 
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            Label1.Text 
= "请选择你要编辑的节点位置";
        }

    }

    
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif    
{
        fvDataBind();
    }

    
protected void FormView1_ItemCommand(object sender, FormViewCommandEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif    
{
        
switch (e.CommandName) 
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
case "Edit":
                FormView1.ChangeMode(FormViewMode.Edit);
                
break;
            
case "New":
                FormView1.ChangeMode(FormViewMode.Insert);
                
break;
            
case "Cancel":
                FormView1.ChangeMode(FormViewMode.ReadOnly);
                
break;
            
case "Update":
                TextBox tb 
= (TextBox)this.FormView1.FindControl("TextBox1");
                TextBox tb1 
= (TextBox)this.FormView1.FindControl("TextBox2");
                TextBox tb4
=(TextBox)this.FormView1.FindControl("TextBox4");
                updateXml(Server.MapPath(
"~/admin/hero/XMLFile2.xml"), tb.Text, tb1.Text,tb4.Text);
                
break;
            
case "Insert":
                TextBox tb5 
= (TextBox)this.FormView1.FindControl("TextBox5");
                TextBox tb6
= (TextBox)this.FormView1.FindControl("TextBox6");
                TextBox tb3 
= (TextBox)this.FormView1.FindControl("TextBox3");
                RadioButton rb1 
= (RadioButton)this.FormView1.FindControl("RadioButton1");
                RadioButton rb2 
= (RadioButton)this.FormView1.FindControl("RadioButton2");
                
if (rb2.Checked)
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    insertXml(Server.MapPath(
"~/admin/hero/XMLFile2.xml"), tb5.Text, tb6.Text, tb3.Text, "before");
                }

                
if (rb1.Checked) 
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    insertXml(Server.MapPath(
"~/admin/hero/XMLFile2.xml"), tb5.Text, tb6.Text, tb3.Text, "after");
                }

                
break;
            
case "Delete":
                deleteXml(Server.MapPath(
"~/admin/hero/XMLFile2.xml"));
                
break;
        }

    }

    
protected void FormView1_ModeChanging(object sender, FormViewModeEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif    
{
        
switch(e.NewMode )
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
case FormViewMode.Edit:
                fvDataBind();
                
break;
            
case FormViewMode.Insert:
                fvDataBind();
                
break;
            
case FormViewMode.ReadOnly:
                fvDataBind();
                
break;
            
        }

    }

    
protected void updateXml(string xmlpath,string newvalue,string newvalue1,string navurl) 
ExpandedBlockStart.gifContractedBlock.gif    
{
        XmlDocument doc 
= new XmlDocument();
        doc.Load(xmlpath);
        XmlElement root 
= doc.DocumentElement;
        
string xpath = TreeView1.SelectedNode.DataPath;
        XmlNode xn 
= root.SelectSingleNode(xpath);
        XmlElement xe 
= (XmlElement)xn;
        
if (newvalue == "")
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            xe.SetAttribute(
"text", newvalue1);
            xe.SetAttribute(
"navurl", navurl);
        }

        
else
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            xe.SetAttribute(
"type", newvalue);
            xe.SetAttribute(
"navurl", navurl);
        }

        doc.Save(xmlpath);
    }

    
protected void insertXml(string xmlpath,string newvalue,string newvalue1,string navurl,string position) 
ExpandedBlockStart.gifContractedBlock.gif    
{
        XmlDocument doc 
= new XmlDocument();
        doc.Load(xmlpath);
        XmlElement root 
= doc.DocumentElement;
        
string xpath = TreeView1.SelectedNode.DataPath;
        
int depth=TreeView1.SelectedNode.Depth;
        XmlNode xn 
= root.SelectSingleNode(xpath);
        XmlElement xe 
= (XmlElement)xn;
        
if (newvalue == "")
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            XmlElement xe1 
= doc.CreateElement("Prpducttype");
            xe1.SetAttribute(
"text", newvalue1);
            xe1.SetAttribute(
"navurl", navurl);
            
if (depth == 1)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
if (position == "before")
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    xe.ParentNode.InsertBefore(xe1, xn);
                }

                
else
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    xe.ParentNode.InsertAfter(xe1, xn);
                }

            }

            
if (depth == 0
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
if (position == "before"
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    Label1.Text 
= "不能插入";
                }

                
if (position == "after"
ExpandedSubBlockStart.gifContractedSubBlock.gif                
{
                    xe.AppendChild(xe1);
                }

            }

        }

        
else 
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            XmlElement xe1 
= doc.CreateElement("Product");
            xe1.SetAttribute(
"type", newvalue);
            xe1.SetAttribute(
"navurl", navurl);
            
if (position == "before")
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                xe.ParentNode.InsertBefore(xe1, xn);
            }

            
else 
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                xe.ParentNode.InsertAfter(xe1, xn);
            }

        }

        doc.Save(xmlpath);
    }

    
protected void deleteXml(string xmlpath) 
ExpandedBlockStart.gifContractedBlock.gif    
{
        XmlDocument doc 
= new XmlDocument();
        doc.Load(xmlpath);
        XmlElement root 
= doc.DocumentElement;
        
string xpath = TreeView1.SelectedNode.DataPath;
        
int depth = TreeView1.SelectedNode.Depth;
        XmlNode xn 
= root.SelectSingleNode(xpath);
        XmlElement xe 
= (XmlElement)xn;
        xe.ParentNode.RemoveChild(xn);
        doc.Save(xmlpath);
    }

    
protected void FormView1_ItemUpdating(object sender, FormViewUpdateEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif    
{
        FormView1.ChangeMode(FormViewMode.ReadOnly);
        TreeView1.DataBind(); 
    }


    
protected void FormView1_ItemInserting(object sender, FormViewInsertEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif    
{
        FormView1.ChangeMode(FormViewMode.ReadOnly);
        TreeView1.DataBind();
    }


    
protected void FormView1_ItemDeleting(object sender, FormViewDeleteEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif    
{
        FormView1.ChangeMode(FormViewMode.ReadOnly);
        TreeView1.DataBind();
    }
写完发现自己还是没有按面向对象来写代码,纯粹是面向过程和功能,缺点很明显,只能修改父级和子级,多了没那功能,不过总算完成点需要,就先这样,再学习吧。

转载于:https://www.cnblogs.com/authen/archive/2009/11/25/1610826.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值