Usuário com melhor resposta
disparar evento do gridview pelo Jquery

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.
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.
- Marcado como Resposta Ricardo RussoModerator quinta-feira, 10 de janeiro de 2013 13:03
-
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
- Marcado como Resposta Ricardo RussoModerator quinta-feira, 10 de janeiro de 2013 13:03
Todas as Respostas
-
-
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.
-
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.
}
-
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.
- Marcado como Resposta Ricardo RussoModerator quinta-feira, 10 de janeiro de 2013 13:03
-
-
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
- Marcado como Resposta Ricardo RussoModerator quinta-feira, 10 de janeiro de 2013 13:03