我有一个绑定到function openTab(tabName)
{
var targetTab, activeTab;
// Get the div:
targetTab = document.getElementById(tabName);
// If it is the active tab, return:
if(targetTab.style.display.className == "visible");
return;
// No, it is not the active tab:
document.getElementsByClassName("visible")[0].className = "invisible";
// Make the target tab visible:
document.getElementById(tabName).className = "visible";
}
的XML。在网格视图列中,我有一个删除行的按钮。但我一直在说:
System.NotSupportedException:不支持指定的方法。
GridView
我正在尝试编辑的XML:
protected void Remove(string itemValue)
{
XDocument doc = XDocument.Load(Server.MapPath("~/ReportConfig.xml"));
doc.Descendants("Report")
.Where(p => (string)p.Attribute("ID") == itemValue)
.FirstOrDefault().Remove();
}
protected void GridView1_OnRowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName != "Delete") return;
Remove(e.CommandArgument.ToString());
}
答案 0 :(得分:1)
如果未满足Where()
条件,FirstOrDefault()
将返回默认值null
,然后Remove()
将抛出异常,因为它无法在{{null
上运行1}}参考。
根据您的代码,当e.CommandArgument.ToString()
为"1"
时,您的代码将起作用,您最终会得到XML <Reports />
。但是当e.CommandArgument.ToString()
是除"1"
以外的任何值时,您的代码将抛出异常。将其更改为.FirstOrDefault()?.Remove()
以避免例外:
doc.Descendants("Report")
.Where(p => (string)p.Attribute("ID") == itemValue)
.FirstOrDefault()?.Remove();