我在同一内容控件中有3个表,如何获取第一个表并将其删除?
我试过使用
SdtBlock ccWithTable = mainPart.Document.Body.Descendants<SdtBlock>().Where
(r => r.SdtProperties.GetFirstChild<Tag>().Val == tag).Single();
Table theTable = ccWithTable.Descendants<Table>().First();
ccWithTable.RemoveChild(theTable);
但这给我一个错误:
指定的oldChild不是此元素的子级
我怀疑由于该表不是内容控件的子级,因此还有其他方法吗?
最佳答案
根据您的评论,我想您可以访问table
对象,但它不是sdtblock
的直接子对象,因此您无法使用ccWithTable.RemoveChild()
方法将其删除(是的,它假定要删除的项目是一部分此元素的直接子元素)。
但是,如果可以访问表对象(子对象是子对象),则无需知道其父对象。
只需调用OpenXmlElement.Remove()
方法:它将从其父级中删除该元素。
theTable.Remove();