GridView的RowDeleting 操作XML删除问题??

vinjuviva 2009-12-30 09:20:46
我刚接触XML,不太清楚XML地操作方法,我想问一下GridView的RowDeleting操作XML删除应该怎么写??我想删除指定<AD></AD>及AD下的所有子节点! 谁能帮帮忙??
XML格式:

<?xml version="1.0" standalone="yes"?>
<ADlist>
<AD id="AD1">
<title>xxxxxxxxxxxxx</title>
<code>xxxxxxxxxxxxx</code>
</AD>
<AD id="AD2">
<title>yyyyyyyyyyyyyy</title>
<code>yyyyyyyyyyyyyy</code>
</AD>
</ADlist>
...全文
131 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
我想我是醉了 2009-12-30
  • 打赏
  • 举报
回复
sf
zhanghang19890621 2009-12-30
  • 打赏
  • 举报
回复
RowDeleting 这个东西
可以在 点击 套用格式那个下面的 添加新列
然后下拉框里面选择 CommandFiled
然后 下面会出来一个删除 在上面打上勾 确定

然后gridview会自动在每行增加一个 删除空间 跟linkButton差不多

点击它就会触发 RowDeleting
mngzilin 2009-12-30
  • 打赏
  • 举报
回复
补充:建议在前台添加OnRowDeleting="GridView1_RowDeleting"
如果在后台注册GridView1.RowDeleting += new GridViewDeleteEventHandler(GridView1_RowDeleting); 需要将这句放到if(!IsPostBack){}外面,不是里面。
mngzilin 2009-12-30
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 vinjuviva 的回复:]
提示是弹出了,不过点击“是”以后还是不执行,有解决方法吗??
[/Quote]

如果你在前台gridview属性中添加了OnRowDeleting="GridView1_RowDeleting"可以不加下面这句
GridView1.RowDeleting += new GridViewDeleteEventHandler(GridView1_RowDeleting);
否则必须添加。

<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Delete" Text="删除"></asp:LinkButton>

这样你的delete事件才能执行
vinjuviva 2009-12-30
  • 打赏
  • 举报
回复
不过我有一个问题,就是加了删除确认事件后不执行删除操作

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
{
((ImageButton)e.Row.Cells[5].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你确认要删除?')");
}
}
}

提示是弹出了,不过点击“是”以后还是不执行,有解决方法吗??
vinjuviva 2009-12-30
  • 打赏
  • 举报
回复
使用mngzilin的方法通过了,
这句可以不加
GridView1.RowDeleting += new GridViewDeleteEventHandler(GridView1_RowDeleting);
在SAVE XML后用上
e.Cancel = true;
就可以了!
vinjuviva 2009-12-30
  • 打赏
  • 举报
回复
nodes = root.SelectNodes("descendant::Table[EName='" + TextBox1.Text.Trim() + "']");
这么的descendant::Table[EName=是什么意思???
mngzilin 2009-12-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 vinjuviva 的回复:]
还有就是我在的RowDeleting下的事件都不执行,为什么呢???
[/Quote]
在page——load中注册事件:
GridView1.RowDeleting += new GridViewDeleteEventHandler(GridView1_RowDeleting);

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{ }这样你的事件才能执行
vinjuviva 2009-12-30
  • 打赏
  • 举报
回复
马上试试!!!!
happy664618843 2009-12-30
  • 打赏
  • 举报
回复
在模板列放个linkButton 用commandName 写del在RowCommand中写 再根据选中行删除相应的xml节点
happy664618843 2009-12-30
  • 打赏
  • 举报
回复
实例 测试通过

XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("test.xml"));
XmlNodeList nodes;
XmlElement root = doc.DocumentElement;
nodes = root.SelectNodes("descendant::Table[EName='" + TextBox1.Text.Trim() + "']");
foreach (XmlNode node in nodes)
{
root.RemoveChild(node);
}
doc.Save(Server.MapPath("test.xml"));
Xml2.Document = doc;
}
else
Response.Write("<script>alert('请输入要删除的节点');location='javascript:history.go(-1)';</script>");
}
vinjuviva 2009-12-30
  • 打赏
  • 举报
回复
还有就是我在的RowDeleting下的事件都不执行,为什么呢???
mngzilin 2009-12-30
  • 打赏
  • 举报
回复
在RowDeleting中加入下面的,你自己需要改造一些地方:

XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("a.xml"));
XmlNodeList xnl = doc.DocumentElement.ChildNodes;
for (int i = 0; i < xnl.Count; i++)
{
if(xnl[i].Attributes[0].Value=="AD1")//你要删除的节点id
{
xnl[i].RemoveAll();//删除子节点
doc.DocumentElement.RemoveChild(xnl[i]);//删除该节点
}
}

doc.Save(Server.MapPath("a.xml"));
vinjuviva 2009-12-30
  • 打赏
  • 举报
回复
楼上的BindGrid()是什么??有C#的吗???
qqzeng-ip 2009-12-30
  • 打赏
  • 举报
回复
Protected Sub GridView1_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GridView1.RowDeleting
BindGrid()
Dim oDs As DataSet = GridView1.DataSource
oDs.Tables(0).Rows(GridView1.Rows(e.RowIndex).DataItemIndex).Delete()
oDs.WriteXml(Request.PhysicalApplicationPath + "XMLFile.xml")
BindGrid()
End Sub

62,263

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧