Usuário com melhor resposta
Chamando uma função JQurey no cs

Pergunta
-
Olá pessoal, estou com um problema em chamar uma função JQuery no Cs, tenho uma div que é chamada a partir de um linkbutton, com efeito JQuery, após um cadastro clico no botão salvar, e ele desaparece, para cadastrar um novo produto tenho que novamente clicar no linkbutton para ela aparecer.
Assim, penso em colocar um chamado dentro do evento do btn cadastro, onde após cadastrar, a div ainda permanecerá na tela.
Obrigado.
Respostas
-
Marcos,
Infelizmente não vai funcionar pq assim que gera o POSTBACK ele chama novamente a função que a gente colocou no JQUERY que oculta as caixas, então a gente precisa fazer uma pequena otimização(rs) para executar o código após o POSTBACK, vamos lá!
1 - No final do seu código, antes de fechar a tag FORM, coloque o seguinte código:
<asp:Literal ID="ltScript" runat="server" />
2 - Adicione o código abaixo no método LkB_SalvarProduto:
ltScript.Text = "<script>$('#cadProduto').show();</script>";
Explicação
Com a LITERAL no final da página a gente pode escrever qualquer coisa dentro dela, nesse caso a gente vai escrever o script que abre a janela que você quer, então a gente coloca no método que é disparado no postback a funcionalidade para preencher a LITERAL com o script para abrir a MODAL de produtos por exemplo.Espero ter ajudado e boa sorte!
Não esqueça de marcar como útil uma resposta que te ajude.
"A diversão é a alma do negócio"- Marcado como Resposta Marcos Bazilio segunda-feira, 2 de julho de 2012 14:58
Todas as Respostas
-
ClientScript.RegisterStartupScript(Page.GetType(), "nomeUnico", "<script>$('div').hide();</script>"
http://www.linkedin.com/pub/murilo-kunze/44/191/455
- Editado Murilo Kunze quinta-feira, 28 de junho de 2012 18:41
-
Valeu Murilo,
mas não funcionou, ... minha div tem o id= "cadProduto", chamo na função.
<
$(document).ready(function () {
$('#cadProduto').hide();
$('#mostrar1').click(function (event) {
$("#cadFornecedor").hide();
event.preventDefault();
$("#cadProduto").show("slide");
});
/>
-
-
-
-
Tenta: Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Nome", "$('#cadProduto').show()", true);
http://www.linkedin.com/pub/murilo-kunze/44/191/455
- Editado Murilo Kunze quinta-feira, 28 de junho de 2012 19:25
-
-
-
Acho que é por causa do seu .hide... seu script está no começo da página ou no final?
Tenta isso:
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Nome", "$(function(){$('#cadProduto').show()});", true);
http://www.linkedin.com/pub/murilo-kunze/44/191/455
-
-
-
-
-
-
Esse é o que chama as div's
<script type="text/javascript">
$(document).ready(function () {
$('#cadFornecedor').hide();
$('#mostrar').click(function (event) {
$("#cadProduto").hide();
event.preventDefault();
$("#cadFornecedor").show("slide");
});
$('#cadProduto').hide();
$('#mostrar1').click(function (event) {
$("#cadFornecedor").hide();
event.preventDefault();
$("#cadProduto").show("slide");
});
});
</script>
<fieldset>
<a style="color: black" href="#" id="mostrar">Cadastro de Fornecedores</a> |
<a style="color: black" href="#" id="mostrar1">Cadastro de Produtos</a> |
</fieldset> -
Vamos lá...
Primeiro eu fiz uma pequena alteração no seu javascript:
<script language="javascript" type="text/javascript"> $(document).ready(function(e) { $('#cadFornecedor').hide(); $('#cadProduto').hide(); $('.m_fornecedor').click(function (event) { event.preventDefault(); $("#cadProduto").hide(); $("#cadFornecedor").show("slide"); }); $('.m_produto').click(function (event) { event.preventDefault(); $("#cadFornecedor").hide(); $("#cadProduto").show("slide"); }); }); function fechar_tudo(){ $('#cadFornecedor').hide(); $('#cadProduto').hide(); } </script>
O que eu fiz?
1 - veja que eu apenas organizei e coloquei as mesmas funções só que troquei o "#" por ".", essa alteração vai fazer com que o JQUERY atribua a funcionalidade a todos os objetos com a classe "m_fornecedor" e "m_produto"2 - criei uma nova função onde ele oculta todas as modals abertas, apra uso futuro.
Depois eu fiz uma pequena alteração no html:
<fieldset> <a style="color: black" href="#" id="mostrar" class="m_fornecedor">Cadastro de Fornecedores</a> | <a style="color: black" href="#" id="mostrar1" class="m_produto">Cadastro de Produtos</a> | </fieldset>
Veja que eu apenas adicionei o atributo "class" com a opção desejada para o JQUERY localizar o objeto e atribuir a funcionalidade que a gente criou lá em cima.
Quando você quiser fechar a div que estiver aberta só usar o OnClietClick="fechar_tudo();"
Espero ter ajudado e boa sorte!
Não esqueça de marcar como útil uma resposta que te ajude.
"A diversão é a alma do negócio" -
Blz, ficou bem mais organizado...
Para a div cadProduto eu uso o código abaixo para gravar algum item, e após executar ele fecha a div, só que eu quero que permaneça aberta para gravar novos itens, e o script que vc postou ele fecha após a gravação (código abaixo).
protected void LkB_SalvarProduto(object sender, EventArgs e)
{
using (var ctx = new Web1Entities())
{
var g = new produto {
nomeProduto = TxtProduto.Text,
idTipoProduto = Convert.ToInt32(DDLTipoProduto.SelectedItem.Value),
};
ctx.AddToproduto(g);
// efetiva os inserts
ctx.SaveChanges();
TxtProduto.Text = "";
CarregaCombo();
}
}valeu !!!
-
Marcos,
Ela vai fechar pq você não está usando AJAX para salvar, correto?
Nesse caso você dispara um POSTBACK que acaba gerando um RELOAD da página, correto?Não esqueça de marcar como útil uma resposta que te ajude.
"A diversão é a alma do negócio" -
Isso...
Eu estava tentando fazer o que o Murilo colocou ....
Colocando esse trecho após o CarregaCombo();
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Nome", "$(function(){$('#cadProduto').show()});", true);
... mas tb não esta funcionando.
-
Marcos,
Infelizmente não vai funcionar pq assim que gera o POSTBACK ele chama novamente a função que a gente colocou no JQUERY que oculta as caixas, então a gente precisa fazer uma pequena otimização(rs) para executar o código após o POSTBACK, vamos lá!
1 - No final do seu código, antes de fechar a tag FORM, coloque o seguinte código:
<asp:Literal ID="ltScript" runat="server" />
2 - Adicione o código abaixo no método LkB_SalvarProduto:
ltScript.Text = "<script>$('#cadProduto').show();</script>";
Explicação
Com a LITERAL no final da página a gente pode escrever qualquer coisa dentro dela, nesse caso a gente vai escrever o script que abre a janela que você quer, então a gente coloca no método que é disparado no postback a funcionalidade para preencher a LITERAL com o script para abrir a MODAL de produtos por exemplo.Espero ter ajudado e boa sorte!
Não esqueça de marcar como útil uma resposta que te ajude.
"A diversão é a alma do negócio"- Marcado como Resposta Marcos Bazilio segunda-feira, 2 de julho de 2012 14:58
-
-
Se o seu button cadProduto for um <asp:Button> nunca vai funcionar usando $("#cadProduto");
Quando a pagina é renderizada o seu botão recebe um outro nome.
$("#<%=cadProduto.ClientID%>").click(function(){});
Não esqueça de marcar o post como útil caso tenha te ajudado.
-
-
-
-
Marcos, boa tarde!
Eu tenho também preciso que uma div hide seja exibida após um evento em uma aplicação minha e tenho isso resolvido ja.
Eu uso esse código aqui:
public static void executaScript(Page aPage, Object aThis, String Script) {
aPage.ClientScript.RegisterStartupScript(aThis.GetType(), "strJSAlert", "<script language=Javascript type text/Javascript>" + Script + "</script>"); }
Pra chamar chamar esse procedimento eu faço assim:
protected void LkB_SalvarProduto(object sender, EventArgs e){ [seu código] ... ... executaScript(Page, this, "document.getElementById('form_cadastro').style.display ='block'"); }
Não esqueça de marcar como útil uma resposta que te ajude.
abçs
- Editado hksistemas domingo, 1 de julho de 2012 21:02 inserir cod
-
Marcos,
Como eu tinha dito lá em cima mantem tudo só tira o .hide da função js que a gente crio. O que você vai precisar fazer é o seguinte:
if (!IsPostBack) { ltStatus.Text = "<script>$('#cadFornecedor').hide();$('#cadProduto').hide();</script>"; }
Isso vai fazer com que as caixas sejam ocultas se a página estiver carregando pela primeira vez, agora quando rolar o click no seu botão você precisar mandar uma ou outra ficar oculta, entendeu?
Boa sorte!
Não esqueça de marcar como útil uma resposta que te ajude.
"A diversão é a alma do negócio" -
-
-
Consegui... Obrigado Lucas, segui a tua ideia, e coloquei no botão
ltStatus.Text = "<script>$('#cadFornecedor').hide();$('#cadProduto').show();</script>";
Assim, ele tira uma div e permanece com a outra....
Kra brigadão msm,
Ops, obrigado a todos que responderam ....
Até mais....