2

我返回了一个向用户询问确认消息的 Javascript 函数。JavaScript 函数是

    function ConfirmOnDelete() {
    if (confirm("Are you sure to delete?"))
        return true;
    else
        return false;

和 GridView 如下所示:

    <asp:CommandField HeaderText="Delete" ShowDeleteButton="True" />

在这里,我想在用户单击 GridView 命令字段中的删除时调用 JavaScript 函数。这个怎么称呼?

4

7 回答 7

6

假设您想继续使用您的CommandField,您可以使用 GridView 的OnRowDataBound事件以编程方式执行此操作。

在声明中指定 RowDataBound 事件的事件处理程序GridView

<asp:GridView ID="gv" runat="server" OnRowDataBound="gv_RowDataBound"....

然后在您的事件处理程序(代码隐藏)中找到您的按钮(这里我假设ImageButton,尽管这取决于您的ButtonType属性CommandField)并将 JavaScript 添加到其OnClientClick属性。

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        ((ImageButton)e.Row.Cells[cell].Controls[ctrl]).OnClientClick = "return confirm('Are you sure you want to delete?');"; // add any JS you want here
    }
}

在上面的示例中,cell指的是您的列索引,CommandFieldctrl指的是您正在引用的单元格中的控件索引(删除按钮)。

于 2013-01-18T11:06:23.883 回答
3

您最好避免在服务器端询问删除确认,使用 javascript 捕获用户最终决定,然后转到服务器端执行您的逻辑。CommandField 将不是这里的最佳解决方案。

JS:

<script type="text/javascript">
    function DeleteConfirm() {

        if (confirm("Are you sure you want to delete this customer from excluded customer list ?")) {
            return true;
        }
        return false;
    }
</script>

HTML:

            <asp:TemplateField HeaderText=" ">
                <ItemTemplate>
                    <asp:LinkButton ID="lnk_RemoveFromlist" runat="server" Text="Delete"
                        CommandName="Delete" OnCommand="Delete_Command" CommandArgument='<%# Eval("ID").ToString()' OnClientClick='return DeleteConfirm()'></asp:LinkButton>
                </ItemTemplate>
            </asp:TemplateField>

代码:

protected void Remove_Command(object sender, CommandEventArgs e)
{
    //Implement your Delete Logic
}
于 2013-01-18T11:15:51.017 回答
2

对于取消按钮的命令名称为“cancel”,对于删除按钮“delete”,请检查

if(e.CommandName == "delete")
 {
   //script to delete();
 }
else if(e.commandName == "cancel")
 {
   //close with some script;
 }

要在代码隐藏中调用 javascript 函数,

Page.ClientScript.RegisterStartupScript(this.GetType(), "Call my function","loadPopupBox();", true);
于 2013-01-18T11:17:36.407 回答
1

您可以使用按钮的OnClientclick事件来调用该函数。例如

<asp:button id="btndelete" runat="server" Text="delete" Onclientclick="if(!ConfirmOnDelete())return false;"/>
于 2013-02-08T10:27:25.783 回答
1

一般来说,您必须指定OnClientClick="return confirm('Are you sure you want to delete ?');",但这不适用于CommandField更好地使用TemplateField,这可以更好地解释http://davesquared.net/2007/10/confirm-delete-for-gridview.html

于 2013-01-18T10:50:34.917 回答
0

HTML:

<asp:GridView ID="GridView1" runat="server" OnRowDeleting="gv1_RowDeleting">
   <Columns>
       <asp:TemplateField HeaderText="Delete">
          <ItemTemplate>
                   <asp:CommandField ShowDeleteButton="true" HeaderText="delete" />  
          </ItemTemplate>
       </asp:TemplateField>
   </Columns>
</asp:GridView>

代码:

    protected void gv1_RowDeleting (object sender, GridViewDeleteEventArgs e) 
{

    GridView1.Attributes.Add("OnClick", "return confirm('Really wanna delete?');");

       // implement your delete logic

    Response.Write("<script>alert("Delete Successful");</script>");

}

当我们单击 Gridview 中的“删除”命令字段时,这将调用 Javascript 函数,并且 Response.write 函数将发出数据已被删除的警报。您可以在此函数中添加要执行的 whwtever 函数。

于 2013-10-31T11:10:47.773 回答
0

使用启动脚本

    ScriptManager.RegisterStartupScript(Page, this.GetType(), "ConfirmOnDelete", "ConfirmOnDelete();", true);

或者您也可以使用 onclientclick

于 2013-01-18T10:52:40.480 回答