为什么我的LinkButton要点两次才有用。

diya 2006-05-12 05:50:51
private void Page_Load(object sender, System.EventArgs e)
{
//页面初试化时进行数据绑定
if(!IsPostBack)
{
DataListDataBind();
}
}


private void AdminShow_DeleteCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
{
LinkButton btnDel = (LinkButton)e.Item.FindControl("DeleteButton");
btnDel.Attributes.Add("onclick","return confirm('确定要删除吗?')");

}

我是新手,麻烦给出如何修改的代码谢谢!
...全文
374 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
webwait 2006-05-15
  • 打赏
  • 举报
回复
private void AdminShow_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
LinkButton btnDel = (LinkButton)e.Item.FindControl("DeleteButton");
btnDel.Attributes.Add("onclick","return confirm('确定要删除吗?')");
}
}
同上
afdfgg 2006-05-15
  • 打赏
  • 举报
回复
if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
LinkButton btnDel = (LinkButton)e.Item.FindControl("DeleteButton");
btnDel.Attributes.Add("onclick","return confirm('确定要删除吗?')");

}
你原来写的不错,不过要加上单双行的判定,不然AlternatingItem(从零开始的偶数索引)行就没有加上事件,给分吧
diya 2006-05-15
  • 打赏
  • 举报
回复
这个是linkbutton
<asp:LinkButton id="DeleteButton" CommandName="Delete" CommandArgument='<%#Server.HtmlEncode(DataBinder.Eval(Container.DataItem,"UserID").ToString())%>' runat="server">删除</asp:LinkButton>

之后在ItemDataBound中这样写
private void AdminShow_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
LinkButton btnDel = (LinkButton)e.Item.FindControl("DeleteButton");
btnDel.Attributes.Add("onclick","return confirm('确定要删除吗?')");
}

我觉得没有写错啊,可就是提示错误.
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

好晕啊~~~!
jimu8130 2006-05-15
  • 打赏
  • 举报
回复
该按钮的commandname = delete 还有它的id = deletebutton
jimu8130 2006-05-15
  • 打赏
  • 举报
回复
其次,当我右击datalist控件的时候选择编辑模板你进去查看下该按钮的commandname还有id是否正确
jimu8130 2006-05-15
  • 打赏
  • 举报
回复
应该是放在itemdatabound事件里面来写
private void DLDeptType_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
LinkButton select =(LinkButton)e.Item.FindControl("btnSelect");
select.Enabled = false;
select.ForeColor = System.Drawing.Color.Black;

}

我这样写的没有报错
jimu8130 2006-05-15
  • 打赏
  • 举报
回复
当你再次点击该按钮才会触发这个confirm这个事件
diya 2006-05-15
  • 打赏
  • 举报
回复
恩,这个我知道了,现在我不是把"删除按钮的单击客户端事件和该按钮绑定"都放在ItemDataBound这个事件里,这种做发不对吗?
jimu8130 2006-05-15
  • 打赏
  • 举报
回复
假如你在deletecommand事件里面加入这个函数的话,那么整个流程是这样
点击按钮 -》执行删除事件 -》将删除按钮的单击客户端事件和该按钮绑定形成新的页面(但是并没有触发这个return confirm这个东东
-》回传给你的浏览器
diya 2006-05-15
  • 打赏
  • 举报
回复
我是新手,还请赐教~~~!
jimu8130 2006-05-15
  • 打赏
  • 举报
回复
如果你加到deletecommand事件只能说明你还对web的整个运行机制缺乏了解
diya 2006-05-15
  • 打赏
  • 举报
回复
回:jimu8130(IBMT43)

ID肯定是DeleteButton,而且我把这段代码加到DeleteCommand事件里去反而没有报错误.奇怪??
jimu8130 2006-05-15
  • 打赏
  • 举报
回复
你得确定你那个删除按钮的id是DeleteButton!!!否则肯定会报错
diya 2006-05-15
  • 打赏
  • 举报
回复
我用的是datalist
diya 2006-05-15
  • 打赏
  • 举报
回复
我已经放到ItemDataBound里可会出现错误.
private void AdminShow_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
LinkButton btnDel = (LinkButton)e.Item.FindControl("DeleteButton");
btnDel.Attributes.Add("onclick","return confirm('确定要删除吗?')");
}

错误提示:

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

[NullReferenceException: 未将对象引用设置到对象的实例。]
Eaglerise.back.AdminManage.AdminShow_ItemDataBound(Object sender, DataListItemEventArgs e) in e:\donet项目\eaglerise\back\adminmanage.aspx.cs:133
System.Web.UI.WebControls.DataList.OnItemDataBound(DataListItemEventArgs e) +110
System.Web.UI.WebControls.DataList.CreateItem(Int32 itemIndex, ListItemType itemType, Boolean dataBind, Object dataItem) +139
System.Web.UI.WebControls.DataList.CreateControlHierarchy(Boolean useDataSource) +550
System.Web.UI.WebControls.BaseDataList.OnDataBinding(EventArgs e) +49
System.Web.UI.WebControls.BaseDataList.DataBind() +23
Eaglerise.back.AdminManage.DataListDataBind() in e:\donet项目\eaglerise\back\adminmanage.aspx.cs:81
Eaglerise.back.AdminManage.Page_Load(Object sender, EventArgs e) in e:\donet项目\eaglerise\back\adminmanage.aspx.cs:36
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +750
webwait 2006-05-14
  • 打赏
  • 举报
回复
你第一次点,只是把onclick这个属性加上,第二次这个onclick才有用
====
在ItemDataBound内添加
LinkButton btnDel = (LinkButton)e.Item.FindControl("DeleteButton");
btnDel.Attributes.Add("onclick","return confirm('确定要删除吗?')");
才对
活靶子哥哥 2006-05-14
  • 打赏
  • 举报
回复
LinkButton btnDel = (LinkButton)e.Item.FindControl("DeleteButton");
btnDel.Attributes.Add("onclick","return confirm('确定要删除吗?')");
这部分应该在ItemDataBound内

对于DataGrid内删除按钮的确认对话框, 比较好的方法
请参考
http://huobazi.cnblogs.com/archive/2006/04/04/5200.html
levin9 2006-05-14
  • 打赏
  • 举报
回复
同意一楼的,该linkbutton是在datalist中
blackant2 2006-05-14
  • 打赏
  • 举报
回复
1.在pageload中实现数据绑定正确
2.在datagrid/datalist的create事件中实现linkbutton的onclick方法,而不是在deletecommand事件中
3.在实现了deletecommand后应该再次调用datalist的数据绑定
nayc 2006-05-12
  • 打赏
  • 举报
回复
btnDel.Attributes.Add("onclick","return confirm('确定要删除吗?')");
放page_load里
加载更多回复(8)

62,041

社区成员

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

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

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

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