从datagrid中删除项目(xml)

时间:2010-12-25 14:01:36

标签: c# asp.net xml datagrid

我有一个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>

2 个答案:

答案 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");

我做了这个并且有效