如何从asp:buttonfield制作javascript确认框?

时间:2012-05-18 16:06:09

标签: javascript asp.net buttonfield

我很难从asp:buttonfield获取一个javascript确认框:

这是Gridview的原始代码,但是buttonfield似乎不接受“onClientClick”

<asp:GridView ID="gvNavios" runat="server"  onrowcommand="gvNavios_RowCommand">
<Columns>
    <asp:ButtonField runat="server" ButtonType="Button" Text="delete" CommandName="Eliminar" />
</Columns>
</asp:GridView>

所以我尝试了asp:Linkbutton:

<asp:TemplateField HeaderText="Delete">
<ItemTemplate>
     <asp:LinkButton ID="eliminar" CommandName="delete" runat="server" Text="delete"/>
</ItemTemplate>
</asp:TemplateField>

然而,这样我无法获得点击哪一行,因为e.commandargument未填充

C#代码隐藏:

 protected void gvNavios_RowCommand(object sender, GridViewCommandEventArgs e)
{

    string currentCommand = e.CommandName;
    int currentRowIndex = Int32.Parse(e.CommandArgument.ToString());
    string imo = gvNavios.Rows[currentRowIndex].Cells[3].Text;

    if (currentCommand.Equals("delete"))
    {
        eliminarNavio(imo);
        Response.Redirect(Request.RawUrl);
    }

}

我感谢以下其中一项:在asp:按钮中插入javascript,或从linkbutton获取行号。

2 个答案:

答案 0 :(得分:0)

您需要将CommandArgument添加到LinkBut​​ton并提供一些索引(对象ID将是最佳的)。

<asp:LinkButton ID="eliminar" CommandArgument='<%# Eval("ID") %>' CommandName="delete" runat="server" Text="delete"/>

答案 1 :(得分:0)

Porque no usas un templatefield ?, creo es mas facil

为什么不使用模板字段?¿

RowDataBound

内的

首先创建一个templatefield,然后在templatefield中插入一个imageButton,将其命名为img_borrar(commandName)。

然后在rowcommand中找到它,设置索引(CommandArgument),设置一些样式和java确认:

If e.Row.RowType = DataControlRowType.DataRow Then
                Dim boton_borrar As ImageButton = CType(e.Row.Cells(1).FindControl("img_borrar"), ImageButton)
                boton_borrar .CommandArgument = e.Row.RowIndex.ToString
                boton_borrar .Style("cursor") = "hand"
                boton_borrar .Attributes.Add("onClick", "return window.confirm(' ¿Desea borrar este registro? ');")


            End If