注册 登录
编程论坛 ASP.NET技术论坛

[求助]给GridView模版列添加点击事件后的问题

jimnox 发布于 2007-07-31 13:22, 2113 次点击
for (int i = 0; i < GridViewAdmin.Rows.Count; i++)
{
LinkButton LinkButtonDelete = (LinkButton)GridViewAdmin.Rows[i].Cells[7].FindControl("LinkButtonDelete");
LinkButtonDelete.Attributes.Add("onclick", "return confirm('您真的要删除吗?');");
}

这样添加了点击确认事件

在它的点击事件里怎么判断是确认还是取消了呢?
18 回复
#2
cyyu_ryh2007-07-31 15:27
你也可以在RowDataBound事件里写撒
或者你这两句代码调换下
LinkButtonDelete.Attributes.Add("onclick", "return confirm('您真的要删除吗?');");
LinkButton LinkButtonDelete = (LinkButton)GridViewAdmin.Rows[i].Cells[7].FindControl("LinkButtonDelete");


#3
冰彩虹2007-07-31 16:00
点击按钮,弹出confirm窗口,如果你选择取消,页面什么也不会做的,如果选择确定,才会执行LinkButtonDelete的服务器端事件
#4
jimnox2007-08-01 10:17
以下是引用冰彩虹在2007-7-31 16:00:25的发言:
点击按钮,弹出confirm窗口,如果你选择取消,页面什么也不会做的,如果选择确定,才会执行LinkButtonDelete的服务器端事件

可是现在我弹出confirm以后我取消还是触发了LinkButtonDelete的服务端事件LinkButtonDelete_Click
不知道为什么

还有请问二楼,对调有什么用吗?对调后貌似语法错误

#5
川流不息2007-08-01 10:30
在RowDataBound事件里写.
#6
jyoseyi2007-08-01 11:56
把 LinkButtonDelete.Attributes.Add("onclick", "return confirm('您真的要删除吗?');");
写在for前面试试
#7
cyyu_ryh2007-08-01 11:57
你是把该列转化为模板列吗
#8
冰彩虹2007-08-01 13:21
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton lbt = (LinkButton)e.Row.Cells[0].FindControl("LinkButton2");
lbt.Attributes.Add("onclick","javascript:return confirm('确定删除?');");
}
}
#9
jimnox2007-08-01 13:47
以下是引用冰彩虹在2007-8-1 13:21:55的发言:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton lbt = (LinkButton)e.Row.Cells[0].FindControl("LinkButton2");
lbt.Attributes.Add("onclick","javascript:return confirm('确定删除?');");
}
}

我能成功的给这些LinkButton的点击添加弹出事件了,但是问题在于我在他点击后,不管选确定还是取消,都会执行服务端点击事件,这怎么判断?

#10
冰彩虹2007-08-01 14:11
这个不需要判断的,confirm窗口就“确定”(return true)和“取消”(return false)

当return false时,就应该不会继续运行下去的

我贴出来的都是验证过的,要不你把你的代码贴出来看看
#11
jimnox2007-08-01 21:04
protected void GridViewAdmin_DataBound(object sender, EventArgs e)
{
if (GetPower.GetDel(AdminPower[GetClassIndex(TempClassName)], TempClassID))//删除权限判断
{
for (int i = 0; i < GridViewAdmin.Rows.Count; i++)
{
LinkButton LinkButtonDelete = (LinkButton)GridViewAdmin.Rows[i].Cells[7].FindControl("LinkButtonDelete");
LinkButtonDelete.Attributes.Add("onclick", "return confirm('您真的要删除吗?');");
}
}
}
这段是在GridView的绑定事件里
protected void LinkButtonDelete_Click(object sender, EventArgs e)
{
LinkButton LinkButtonDelete = (LinkButton)sender;
//此处是想要点击“确定”后执行的东西
}//文章列表“删除”

#12
jimnox2007-08-02 21:12

稍顶,继续求解
项目中,请速解,谢谢!

#13
冰彩虹2007-08-02 21:28

代码还是写到GridView的RowDataBound事件里

循环去掉,对绑定行类别做下判断

#14
jimnox2007-08-02 22:23

再试试
谢谢版主

#15
jimnox2007-08-02 22:29
以下是引用cyyu_ryh在2007-8-1 11:57:03的发言:
你是把该列转化为模板列吗

是的,这列是模版

#16
jimnox2007-08-02 22:32

这下是无法FindControl了,提示对象未实例化
protected void GridViewAdmin_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (GetPower.GetUserDel(AdminClass))//删除权限判断
{

LinkButton LinkButtonUserDelete = (LinkButton)e.Row.Cells[6].FindControl("LinkButtonUserDelete");
LinkButtonUserDelete.Attributes.Add("onclick", "return confirm('您真的要删除吗?');");
}
else
{
LinkButton LinkButtonUserDelete = (LinkButton)e.Row.Cells[5].FindControl("LinkButtonUserDelete");
LinkButtonUserDelete.Enabled = false;
}
}
}

[此贴子已经被作者于2007-8-2 22:32:55编辑过]

#17
爱像深蓝2007-08-02 23:08
请楼主把已经由浏览器解析的客户端代码贴出来.
在下也有Visual studio上测试了
在linkbutton的Attribute属性中的add方法添加了("onclick","return confirmCo");
我是在客户端写的函数confirmCo.
function ClickConfirm()
{
var _foo = true;
var strMsg = "确定!";
if(!window.confirm("你真的要删除吗?"))
{
_foo = false;
strMsg = "取消!";
}

alert("你点了"+strMsg);
return _foo;
}

当用户点了取消之后就不会执行服务器端的代码.

[此贴子已经被作者于2007-8-2 23:09:26编辑过]

#18
jimnox2007-08-03 08:28
以下是引用冰彩虹在2007-8-1 13:21:55的发言:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
LinkButton lbt = (LinkButton)e.Row.Cells[0].FindControl("LinkButton2");
lbt.Attributes.Add("onclick","javascript:return confirm('确定删除?');");
}
}

protected void GridViewAdmin_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (GetPower.GetDel(TempClassName,TempClassID,AdminClass))//删除权限判断
{

LinkButton LinkButtonDelete = (LinkButton)e.Row.Cells[7].FindControl("LinkButtonDelete");
LinkButtonDelete.Attributes.Add("onclick", "javascript:return confirm('确定删除?');");
}
else
{
LinkButton LinkButtonDelete = (LinkButton)e.Row.Cells[7].FindControl("LinkButtonDelete");
LinkButtonDelete.Enabled = false;
CheckBox CheckBoxRecordVisible = (CheckBox)e.Row.Cells[4].FindControl("CheckBoxRecordVisible");
CheckBoxRecordVisible.Enabled = false;
}
}
}
protected void LinkButtonDelete_Click(object sender, EventArgs e)
{
LinkButton LinkButtonDelete = (LinkButton)sender;
LabelTest.Text = LinkButtonDelete.CommandArgument;
}//文章列表“删除”

这代码应该和版主的性质一样了吧?
但是我点击确定和取消,LabelText.Text都还是会发生,真是不知所措了

#19
jimnox2007-08-04 08:40
小顶,求解啊……现在后台除了删除提示应该算基本上完成了,这样简直逼我不做删除提示……
1