DataGrid问题,删除时点取消和确定都会删除,为什么?

no_mIss 2007-02-14 07:24:27
aspx如下:
<asp:DataGrid id="DataGridAdmin" runat="server" AutoGenerateColumns="False" DataKeyField="Userid"
AlternatingItemStyle-Width="800" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px"
BackColor="White" CellPadding="3" Width="90%">
<FooterStyle ForeColor="#000066" BackColor="White"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#669999"></SelectedItemStyle>
<AlternatingItemStyle Width="800px"></AlternatingItemStyle>
<ItemStyle ForeColor="#000066"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="DarkGray"></HeaderStyle>
<Columns>
<asp:TemplateColumn HeaderText="管理员">
<HeaderStyle Width="20%"></HeaderStyle>
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem,"Userid")%>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="最后登陆IP">
<HeaderStyle Width="20%"></HeaderStyle>
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem,"LastLoginIP")%>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="最后登陆时间">
<HeaderStyle Width="30%"></HeaderStyle>
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem,"LastLoginTime")%>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="登陆次数">
<HeaderStyle Width="15%"></HeaderStyle>
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem,"LasLoginCount")%>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="删除">
<HeaderStyle Width="15%"></HeaderStyle>
<ItemTemplate>
<asp:Button id="delbtn" Runat="server" Text="删 除" CommandName="Delete"></asp:Button>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle HorizontalAlign="Left" ForeColor="#000066" BackColor="White" Mode="NumericPages"></PagerStyle>
</asp:DataGrid>

CS如下:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
GridBind();
}

}
private void GridBind()
{
T_Admin t_admin = new T_Admin();
DataSet ds = t_admin.GetList("");
this.DataGridAdmin.DataSource=ds;
this.DataGridAdmin.DataBind();
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.DataGridAdmin.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGridAdmin_ItemCommand);
this.DataGridAdmin.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGridAdmin_ItemDataBound);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void DataGridAdmin_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
Button btndel = (Button)e.Item.FindControl("delbtn");
if( btndel!=null)
{
btndel.Attributes.Add("onclick","return confirm('你确定要删除该管理员吗?');");
}
}

private void DataGridAdmin_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName.ToLower()=="delete")
{
string Userid = this.DataGridAdmin.DataKeys[e.Item.ItemIndex].ToString();
//new DMBlue.Blog.BLL.T_Admin().Delete(Userid);
Response.Write("<script>alert('删除了')</script>");
GridBind();
}
}

不知道为什么,点取消也会删除??
...全文
680 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
no_mIss 2007-02-15
  • 打赏
  • 举报
回复

从局域网上访问我用的电脑,也没有这种问题
就是用本机的IE就会有这样的问题

装上firefox试了下,在本机试的也没有问题
现在看来应该是本机的IE有问题了
no_mIss 2007-02-15
  • 打赏
  • 举报
回复


测试回来
在我家那台破老台式机上运行,没有问题,不会再出现这问题了

看来是我现在用的这个电脑系统有问题或是软件有冲突
真是奇怪..
找原因去,回来给分
no_mIss 2007-02-15
  • 打赏
  • 举报
回复
感谢你们大家了
我都试过了,没有效果,就算
直接lbnDel.Attributes.Add("onclick", "return false")
都不行

现在怀疑是系统有问题或是有软件冲突,可怜我搞了两天一夜都没弄明白

现在换台电脑去试,谢谢先
no_mIss 2007-02-15
  • 打赏
  • 举报
回复

谢谢楼上几位了

原因是我本机的IE有问题,至于为什么会这样,目前还不得而之.
sthntxn 2007-02-15
  • 打赏
  • 举报
回复
你的代码在我的机器上好使。你F5跟一下,看看选择“否”以后走不走DataGridAdmin_ItemCommand事件。
goalbell 2007-02-15
  • 打赏
  • 举报
回复
楼主,小弟给你一段代码参考下,不知道有没有帮助:
<asp:datagrid id="Subject" runat="server" Width="500px" OnPageIndexChanged="OnPageIndexChangedMethod"
OnCancelCommand="OnCancelCommandMethod" OnItemDataBound="OnItemDataBoundMethod" OnDeleteCommand="OnDelCommandMethod"
OnEditCommand="OnEditCommandMethod" OnUpdateCommand="OnUpdateCommandMethod" CellPadding="3"
BackColor="White" BorderWidth="1px" BorderStyle="None" BorderColor="#CCCCCC" AutoGenerateColumns="False"
AllowPaging="True" DataKeyField="id">
===================================================================================
protected void OnItemDataBoundMethod(object source,System.Web.UI.WebControls.DataGridItemEventArgs e)
{
foreach(DataGridItem di in this.Subject.Items)
{
if (di.ItemType == ListItemType.Item || di.ItemType == ListItemType.AlternatingItem || di.ItemType == ListItemType.EditItem)
{
((Button)di.Cells[4].Controls[0]).Attributes.Add("onclick","javascript:return confirm('确定要删除吗?');");

}
}
}
protected void OnDelCommandMethod(object source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if(e.CommandName == "Delete")
{
SqlConnection conn_subject=new SqlConnection(conn);
conn_subject.Open();
SqlCommand cmd=new SqlCommand("delete from exam_subject where id=@id",conn_subject);
SqlParameter idPram=new SqlParameter("@id",SqlDbType.Int);
idPram.Value=this.Subject.DataKeys[e.Item.ItemIndex];
cmd.Parameters.Add(idPram);
cmd.ExecuteNonQuery();
conn_subject.Close();
getsubject();

}
}


xie_yanke 2007-02-14
  • 打赏
  • 举报
回复
哦,代码问题.

private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)

{

foreach(DataGridItem di in this.DataGrid1.Items)

{

if(di.ItemType==ListItemType.Item||di.ItemType==ListItemType.AlternatingItem)

{

((LinkButton)di.Cells[8].Controls[0]).Attributes.Add("onclick","return confirm('确认删除此项吗?');");

}

}

}
xiaotupansy 2007-02-14
  • 打赏
  • 举报
回复
我在web里面遇见过这种情况,去msdn问说要把flashget1.80卸载然后重启
你试试
ztwz 2007-02-14
  • 打赏
  • 举报
回复
private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
LinkButton lbnDel = (LinkButton)e.Item.FindControl("lbtnDel");
lbnDel.Attributes.Add("onclick", "return confirm(\"确定删除此吗?\");");
}

}
-------------------------------------
这是偶以前在03里写的代码,你copy试试好使不?
no_mIss 2007-02-14
  • 打赏
  • 举报
回复
to xie_yanke

我一开始就是用deletecommand,结果一样
所以又试ItemCommand,结果还是一样

xie_yanke 2007-02-14
  • 打赏
  • 举报
回复
请使用DataGrid的deletecommand事件.不要在itemcommand中去做.
no_mIss 2007-02-14
  • 打赏
  • 举报
回复
我觉得点取消后和点确定后的结果是一样的.
但我把生成的html代码存成.html后再点取消,就没事了,真郁闷啊
no_mIss 2007-02-14
  • 打赏
  • 举报
回复
我也不知道,以前也弄过,没这样,不知道这次怎么了?
从昨天到现在,一直没搞明白. 我看书上就是这么弄的呀
ztwz 2007-02-14
  • 打赏
  • 举报
回复
。。。。。
不应该呀,既然弹出了删除确认对话框,怎么点取消还会删除呢?
no_mIss 2007-02-14
  • 打赏
  • 举报
回复
改成:
private void DataGridAdmin_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Button btndel = (Button)e.Item.FindControl("delbtn");
if( btndel!=null)
{
btndel.Attributes.Add("onclick","return confirm('你确定要删除该管理员吗?');");
}
}
}

还是不行,死得心都有了!!!郁闷了两天一夜了...
no_mIss 2007-02-14
  • 打赏
  • 举报
回复
to ztwz 用的是vs.net2003

to NekChan 报错
“System.Web.UI.WebControls.ListItemType”并不包含对“AlertingItem”的定义
NekChan 2007-02-14
  • 打赏
  • 举报
回复
绑定之前必须判断是不是项,否则第一次就是绑定到Header上了, btndel 也就肯定是 null
NekChan 2007-02-14
  • 打赏
  • 举报
回复
private void DataGridAdmin_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemType = ListItemType.Item || e.Item.ItemType == ListItemType.AlertingItem)
{
Button btndel = (Button)e.Item.FindControl("delbtn");
if( btndel!=null)
{
btndel.Attributes.Add("onclick","return confirm('你确定要删除该管理员吗?');");
}
}
}

应该为ItemCreated的时候绑定事件
ztwz 2007-02-14
  • 打赏
  • 举报
回复
你用的是vs2005吗?是的话直接在删除按钮的OnClientClick属性中写
return confirm('你确定要删除该管理员吗?');
no_mIss 2007-02-14
  • 打赏
  • 举报
回复

谁遇到过啊?
加载更多回复(5)

62,046

社区成员

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

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

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

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