Pergunta

Estou tendo dificuldades para obter uma caixa de confirmação javascript do asp:buttonfield:

Este é o código original do Gridview, porém o buttonfield parece não aceitar "onClientClick"

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

Então tentei asp:Linkbutton:

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

No entanto, desta forma não consigo saber qual linha foi clicada porque e.commandargument não está preenchido

O código por trás do 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);
    }

}

Eu aprecio um dos seguintes:Insira javascript em asp:button ou obtenha o número da linha do linkbutton.

Foi útil?

Solução

Você precisa adicionar CommandArgument ao LinkButton e fornecer algum índice (o ID do objeto será o melhor).

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

Outras dicas

Porque não usamos um templatefield ?, Creo é mais fácil

por que você não usa um campo de modelo?

dentro de LinhaDataBound :

Primeiro crie um templatefield e, dentro do templatefield, insira um imageButton, chame-o de img_borrar (commandName).

Em seguida, no comando row, encontre-o, defina o índice (CommandArgument), defina algum estilo e a confirmação 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top