Asp.net 如何使用GridView ShowDeleteButton命令字段显示确认消息

Asp.net 如何使用GridView ShowDeleteButton命令字段显示确认消息,asp.net,gridview,controls,linkbutton,directcast,Asp.net,Gridview,Controls,Linkbutton,Directcast,我试图附加一个Javascript函数来确认GridView中记录的删除。我知道在ItemTemplate中使用asp:LinkButton可以更轻松地完成这项工作,但我正在尝试将其附加到CommandField-ShowDeleteButton 我已尝试遵循本教程: 我是GridView新手,我的实现是用VB.Net而不是C#实现的。下面是我尝试注入Javascript函数的代码,我无法理解我的row.cell引用是如何/为什么出错的: 受保护的子GridView1\u行数据绑定(ByVal

我试图附加一个Javascript函数来确认GridView中记录的删除。我知道在ItemTemplate中使用asp:LinkButton可以更轻松地完成这项工作,但我正在尝试将其附加到CommandField-ShowDeleteButton

我已尝试遵循本教程:

我是GridView新手,我的实现是用VB.Net而不是C#实现的。下面是我尝试注入Javascript函数的代码,我无法理解我的row.cell引用是如何/为什么出错的:

受保护的子GridView1\u行数据绑定(ByVal sender作为对象,ByVal e作为GridViewRowEventArgs)_
处理GridView1.RowDataBound
如果e.Row.RowState数据控制RowState.Edit,则
如果e.Row.RowType=DataControlRowType.DataRow,则“检查RowType数据行”
Dim id为String=e.Row.Cells(0).Text'获取要删除的位置
尝试
'将ShowDeleteButton链接强制转换为linkbutton
将lb变暗为链接按钮
Dim i As Integer=4'我们想要在行中的单元格(相对于0而不是1)
lb=DirectCast(例如行单元格(i).控件(2),链接按钮)
如果lb不是Nothing,则“将ID作为参数附加到JavaScript函数”
lb.Attributes.Add(“onclick”,“returnconfirmondelete(“&id&“);”)
如果结束
特例
结束尝试
如果结束
如果结束
这是我的GridView标记片段(比所有绑定列都要忙一点;我在第一个也是唯一一个到达第五列的BoundField之后计算了3个TemplateField项,因此上面的I=4):


当我忽略错误时,命令按钮确实位于第5列:

我在没有Try/Catch的情况下得到的错误是:

如果您还没有弄清楚,您的问题就出在
ButtonType=“Button”
这里:

 <asp:CommandField ButtonType="Button" ControlStyle-CssClass="coolbutton" 
        ShowEditButton="true" 
        ShowDeleteButton="true"
        ShowCancelButton="true" /> 
获取CommandField类的详细信息)。这是有效的:

<asp:CommandField ButtonType="Link" ControlStyle-CssClass="coolbutton" 
            ShowEditButton="true" 
            ShowDeleteButton="true"
            ShowCancelButton="true" /> 

只要在onclientclick事件上调用javascript函数并请求确认即可。如果返回true,则可以调用服务器端代码进行删除

下面是解释代码

<asp:LinkButton ID="lbDelete" runat="server" OnClick="lbDelete_Click" OnClientClick="return fnConfirm();"> Delete</asp:LinkButton>

谢谢

我找到了很多答案

aspx页面:

<asp:CommandField DeleteText="Delete" ShowDeleteButton="true" 
     ButtonType="Button" />

aspx.vb页面:

受保护的子网格视图1\u行数据绑定(发送方作为对象_
e作为GridViewRowEventArgs)_
处理GridView1.RowDataBound
如果e.Row.RowType=DataControlRowType.DataRow,则
如果(e.Row.RowState DataControlRowState.Edit),则
变暗按钮As按钮
oButton=CType(如行、单元格(14)、控件(0)、按钮)
oButton.OnClientClick=_
“如果(确认(““您确定要删除吗?”)==false)返回;”
如果结束
如果结束
端接头

你的回答帮助我以一种新的方式思考这个问题。事实上,我将上面的ButtonType改为Link,DirectCast也起了作用。但我不喜欢这种效果。然后,我将ButtonType改回Button,并将DirectCast改为Button,这一切似乎都很好。还有一点测试要做,但是谢谢你的回答。
<script type="text/javascript">
function fnConfirm() {
    if (confirm("The item will be deleted. Are you sure want to continue?") == true)
        return true;
    else
        return false;
}
<asp:CommandField DeleteText="Delete" ShowDeleteButton="true" 
     ButtonType="Button" />