none
disparar evento do gridview pelo Jquery RRS feed

  • Pergunta

  • gostaria de saber como posso chamar um gridview1_rowcommand a partir do resultado de uma função Jquery. onclientclick="javascript:confirmaExclusao()" 

    o script vai abaixo:

    function confirmarExclusao() {
        $("#dialog-confirm").css('visibility', 'visible');
        $("#dialog-confirm").dialog({
            resizable: false,
            height: 150,
            modal: true,
            buttons: {
                "Delete": function() {
                    //document.aspnetForm.ctl00_ContentPlaceHolderMain_grdConfig_ctl02_btnExcluir.click();
                    //$("#grdConfig table tbody tr").click;
                alert($("<%=grdConfig.ClientID%>"));
                    //$("#ctl00_ContentPlaceHolderMain_grdConfig_ctl02_btnExcluir").click;
                    //alert("#ctl00_ContentPlaceHolderMain_grdConfig_ctl02_btnExcluir");
                    $(this).dialog("close");
                },
                Cancel: function() {
                    $(this).dialog("close");
                }
            }
        });
        
    }

    obrigado.

    sexta-feira, 16 de novembro de 2012 13:26

Respostas

  • Cara, aí você terá que usar webservice/wcf ou PageMethod. Você só conseguirá chamar um método do servidor via javascript por ajax. Sendo que não é todo método que pode ser chamado via javascript. Somente métodos presentes em um web service ou wcf ou que estiverem marcados com "WebMethod" na página respectiva é que poderão ser chamados. Explicando melhor o PageMthod:

    Consiste de um método estático na sua própria página marcado com o atributo "[WebMethod]". Seria mais ou menos isso:

    [WebMethod]

    public static string GetCliente()

    {

    // executa alguma coisa

    }

    Tendo um método assim declarado em sua página, você poderá chama-lo via javascript (jquery). Mas para isso deverá ter um ScriptManager em sua página. Dessa forma você pode ter 1,2 ou mais métodos (PageMethods) e assim fazer a chamada do método respectivo quando quiser. Existe uma forma de chamar esses métodos no javascript, você deve encontrar sem dificuldade nenhuma no google bastando procurar por PageMethod.

    Obs: No método estático você conseguirá fazer qualquer coisa, menos instanciar um controle da sua página. O método estático não enxerga quaisquer controles da página.

    sexta-feira, 16 de novembro de 2012 16:35
  • eu faço assim

    protected void gvPedido_RowCommand(object sender, GridViewCommandEventArgs e)
            {
                if (e.CommandName == "Excluir")
                {
                    int pedid = Convert.ToInt32(e.CommandArgument);
                    //pesquisando o registro
                    foreach(var result in entity.PUS_PEDIDO_USUARIO.Where(ps => ps.ped_id == pedid))
                    {
                        entity.PUS_PEDIDO_USUARIO.DeleteObject(result); 
                    }
                    PED_PEDIDO pedido = entity.PED_PEDIDO.First(pe => pe.ped_id == pedid);
                    //deletando o registros do pedido
                    entity.PED_PEDIDO.DeleteObject(pedido);
                    entity.SaveChanges();
                    ClientScript.RegisterClientScriptBlock(this.GetType(), "focus", "<script language=javascript>alert('Pedido excluído com sucesso !!!')</script>");
                    gvPedido.DataBind();
                }
            }

    no aspx

    <asp:TemplateField HeaderText="Excluir">
                                    <ItemTemplate>
                                        <asp:ImageButton ID="img" CommandName="Excluir" ImageUrl="~/Imagens/icone_lixeira.gif" CommandArgument='<% #Eval("ped_ID") %>' OnClientClick="javascript:return confirmaexclusao()" runat="server" />
                                    </ItemTemplate>
                                    <HeaderStyle Font-Names="Verdana" Font-Size="Small" HorizontalAlign="Center" />
                                    <ItemStyle HorizontalAlign="Center" />
                                </asp:TemplateField>


    Junior

    sexta-feira, 16 de novembro de 2012 17:09

Todas as Respostas

  • Vc testar se o comando é excluir faz assim

    if (e.CommandName == "Excluir")
                {
                    seu comando para excluir o pedido
                }


    Junior

    sexta-feira, 16 de novembro de 2012 14:51
  • Olá amigo,

    Para vincular funções javascript nas linhas de sua grid, você pode fazer no evento "rowdatabound" ou outros evento que dispare na criação da linha. Faça dessa maneira:

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    e.Row.Attributes["onclick"] = "confirmarExclusao()";
                }
            }

    Dessa forma, clicando sobre as linhas, executará sua função javascript. É claro que voce deve passar como parametro o id ou algum dado para saber qual é a linha clicada. Você pode também utilizar essa dica para fazer um "mouseover" sobre as linhas, mudando de cor quando o mouse passa e voltando ao normal quando sai.

    sexta-feira, 16 de novembro de 2012 14:57
  • ok, e considerando que na parte

     buttons: {
                "Delete": function() {
                chamar função X no code behind
                },
                Cancel: function() {
                    $(this).dialog("close");
                }
            }

    code behind:

    protected void X (object sender, eventargs e)

    {

    //Codigo resposta servidor.

    }

    sexta-feira, 16 de novembro de 2012 16:14
  • Cara, aí você terá que usar webservice/wcf ou PageMethod. Você só conseguirá chamar um método do servidor via javascript por ajax. Sendo que não é todo método que pode ser chamado via javascript. Somente métodos presentes em um web service ou wcf ou que estiverem marcados com "WebMethod" na página respectiva é que poderão ser chamados. Explicando melhor o PageMthod:

    Consiste de um método estático na sua própria página marcado com o atributo "[WebMethod]". Seria mais ou menos isso:

    [WebMethod]

    public static string GetCliente()

    {

    // executa alguma coisa

    }

    Tendo um método assim declarado em sua página, você poderá chama-lo via javascript (jquery). Mas para isso deverá ter um ScriptManager em sua página. Dessa forma você pode ter 1,2 ou mais métodos (PageMethods) e assim fazer a chamada do método respectivo quando quiser. Existe uma forma de chamar esses métodos no javascript, você deve encontrar sem dificuldade nenhuma no google bastando procurar por PageMethod.

    Obs: No método estático você conseguirá fazer qualquer coisa, menos instanciar um controle da sua página. O método estático não enxerga quaisquer controles da página.

    sexta-feira, 16 de novembro de 2012 16:35
  • Só para esclarecer, você não conseguirá chama um evento particular via javascript/jquery. Somente o que eu disse acima, métodos estáticos ou wcf/web service.
    sexta-feira, 16 de novembro de 2012 16:55
  • eu faço assim

    protected void gvPedido_RowCommand(object sender, GridViewCommandEventArgs e)
            {
                if (e.CommandName == "Excluir")
                {
                    int pedid = Convert.ToInt32(e.CommandArgument);
                    //pesquisando o registro
                    foreach(var result in entity.PUS_PEDIDO_USUARIO.Where(ps => ps.ped_id == pedid))
                    {
                        entity.PUS_PEDIDO_USUARIO.DeleteObject(result); 
                    }
                    PED_PEDIDO pedido = entity.PED_PEDIDO.First(pe => pe.ped_id == pedid);
                    //deletando o registros do pedido
                    entity.PED_PEDIDO.DeleteObject(pedido);
                    entity.SaveChanges();
                    ClientScript.RegisterClientScriptBlock(this.GetType(), "focus", "<script language=javascript>alert('Pedido excluído com sucesso !!!')</script>");
                    gvPedido.DataBind();
                }
            }

    no aspx

    <asp:TemplateField HeaderText="Excluir">
                                    <ItemTemplate>
                                        <asp:ImageButton ID="img" CommandName="Excluir" ImageUrl="~/Imagens/icone_lixeira.gif" CommandArgument='<% #Eval("ped_ID") %>' OnClientClick="javascript:return confirmaexclusao()" runat="server" />
                                    </ItemTemplate>
                                    <HeaderStyle Font-Names="Verdana" Font-Size="Small" HorizontalAlign="Center" />
                                    <ItemStyle HorizontalAlign="Center" />
                                </asp:TemplateField>


    Junior

    sexta-feira, 16 de novembro de 2012 17:09