我有一个datagrid按钮列,它充当我的xml节点的删除按钮。 元素只显示在一个绑定列中,因此会显示名称。
生成的每个项目都会获得一个唯一的ID(每次生成一个id + ++)。 我的问题是,当我点击绑定列中的一个按钮时,我如何删除一个项目(具有该特定ID的整个元素节点)?
<root>
<element id="0">
<name>One</name>
</element>
<element id="1">
<name>Two</name>
</element>
</root>
protected void dg_DeleteCommand(object sender, DataGridCommandEventArgs e)
{
XmlFunctions.Remove(index);
}/*dg_DeleteCommand*/
(在其他类上运行,我的所有xml方法都写在其中)
public static void Remove(string index)
{
XmlDocument XMLDoc = new XmlDocument();
XMLDoc.Load(XMLFile);
XPathNavigator nav = XMLDoc.CreateNavigator();
var node = nav.SelectSingleNode("/test/one[@id='" +???+ "']");
node.DeleteSelf();
XMLDoc.Save(XMLFile);
}
编辑:添加了datagrid
<asp:View ID="viewDelete" runat="server">
<asp:DataGrid ID="dgDelete runat="server" AutoGenerateColumns="False" OnDeleteCommand="dg_DeleteCommand">
<Columns>
<asp:BoundColumn DataField="name" HeaderText="names" />
<asp:ButtonColumn ButtonType="PushButton" Text="Delete" CommandName="Delete" ></asp:ButtonColumn>
</Columns>
</asp:DataGrid>
</asp:View>
答案 0 :(得分:0)
protected void dg_DeleteCommand(object sender, DataGridCommandEventArgs e)
{
XmlFunctions.Remove(grid selected value);
}
public static void Remove(string itemValue)
{
XDocument doc = XDocument.Load("xmlfile.xml");
doc.Descendants("test")
.Where(p=>p.Attribute("id") != null
&& p.Attribute("id").Value == itemValue)
.SingleOrDefault().Remove();
}
答案 1 :(得分:0)
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load("yourxmlfile.xml");
XmlNode xmlnode = xmldoc.DocumentElement.ChildNodes.Item(indice);
xmlnode.ParentNode.RemoveChild(xmlnode);
xmldoc.Save("yourxmlfile.xml");
我做了这个并且有效