今天写了点关于TreeView和Xml的代码,做下小的总结,暂时只有修改操作,上代码:我用的是TreeView和FormView
首先是FormView的数据绑定方法
Code
protected void fvDataBind()
{
string path = TreeView1.SelectedNode.DataPath;
int depth = TreeView1.SelectedNode.Depth;
XmlDataSource2.XPath = path;
FormView1.DataSource = XmlDataSource2;
FormView1.DataBind();
}
Code
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
fvDataBind();
}
protected void FormView1_ItemCommand(object sender, FormViewCommandEventArgs e)
{
switch (e.CommandName)
{
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");
updateXml(Server.MapPath("~/admin/hero/XMLFile2.xml"), tb.Text, tb1.Text);
break;
}
}
上面这段当树节点被选中的时候让FormView绑定数据,显示选中节点的Details。FormView的ItemCommand方法来更改FormView的模式,分三种:ReadOnly、Insert、Edit。
当ItemCommand方法更改了FormView的模式之后,就触发了ModeChanging事件,下面是其代码:
Code
protected void FormView1_ModeChanging(object sender, FormViewModeEventArgs e)
{
switch(e.NewMode )
{
case FormViewMode.Edit:
fvDataBind();
break;
case FormViewMode.Insert:
fvDataBind();
break;
case FormViewMode.ReadOnly:
fvDataBind();
break;
}
} 然后来写updateXml方法来编辑Xml数据源文件,代码如下:
Code
protected void updateXml(string xmlpath,string newvalue,string newvalue1)
{
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 == "")
{
xe.SetAttribute("text", newvalue1);
}
else
{
xe.SetAttribute("type", newvalue);
}
doc.Save(xmlpath);
} 更新完成后来更改FormView的模式,使之变成ReadOnly。下面的很奇怪,我试了只有放在ItemUpdating事件里才可以触发事件,代码如下:
protected void FormView1_ItemUpdating(object sender, FormViewUpdateEventArgs e)
{
FormView1.ChangeMode(FormViewMode.ReadOnly);
fvDataBind();
}
最后再补充下,不要关闭FormView的ViewState,否则无效果,方法虽然很笨,不过也算完成了功能的需要,其他的操作也以此类推了,以后更新了,谢谢!