Usuário com melhor resposta
Realizar postback de uma pagina que esta dentro da masterpage

Pergunta
-
Olá a todos !
Estou com um problema o qual já pesquisei em vários lugares mais sem uma explicação concreta.
Qual o método mais aconselhável para utilizar na minha master-page para esta exibir uma outra pagina aspx, sendo que esta outra pagina deverá regalizar postbacks para ela mesma, pois ela e uma pagina de cadastro em que se utiliza dropdowlist de grupo e subgrupo, sendo que para alimentar o segundo tenho de realizar um postback com o index do meu primeiro dropdowlist, mas sempre que o dropdowlist realiza o postback o mesmo e para a master-page e não para a pagina aberta dentro dela.
Já pesquisei sobre iframe, ContentPlaceHolder, updatepanel, não conseguindo que nenhum deles obrigasse o postback para a pagina que estava aberta dentro deles . No meu caso eu estava abrindo as paginas dentro de uma DIV via jquery, sendo q o postback dos dropdowlist ocorria na master-page e não na pagina que estava em aberto na minha master-page.
Tem vários dias que já estou apanhando disso.
Desculpem se eu disser algo de errado e pq sou iniciante em asp.net
Respostas
-
Allan, você poderia criar sua outas paginas, a frm_cliente.aspx por exemplo
usando as caracteristicas da master page, normalmente é feito assim
Bruno Viegas D. Ribeiro
Nunca abandone sua thread!
- Se alguma resposta resolveu seu problema marque-a como resposta para que possa ajudar outras pessoas.
- Se a resposta não resolveu, mas ajudou a você chegar a sua resposta Marque-a como útil.- Marcado como Resposta Allan d.s segunda-feira, 24 de setembro de 2012 12:19
-
Todas as Respostas
-
Allan, boa tarde
Se você esta usando uma master-page, basta utilizar os ContentPlaceHolder
quando a pagina é carrega no browser, não há diferença entre master-page e sua pagina "interna", tudo vira uma só
Post seu codigo aqui para que possamos ver se tem algo errado
Bruno Viegas D. Ribeiro
Nunca abandone sua thread!
- Se alguma resposta resolveu seu problema marque-a como resposta para que possa ajudar outras pessoas.
- Se a resposta não resolveu, mas ajudou a você chegar a sua resposta Marque-a como útil. -
Obrigada pela atenção Bruno, o código da master-page é este:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="main.master.cs" Inherits="pedido_web.paginas.main" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <base target="_self"/> <title>Inux Request</title> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <link rel="shortcut icon" type="image/x-icon" href="../layuot/imagens/icone.ico" /> <!--SETANDO CSS SITE--> <link rel="stylesheet" href="../layuot/css/style_request.css" type="text/css" media="all" /> <!--SETANDO CSS MENU LATERAL(ESQUERDA)--> <link href="~/layuot/css/dcaccordion.css" rel="stylesheet" type="text/css" /> <link href="../layuot/css/grey.css" rel="stylesheet" type="text/css" /> <!--SETANDO JQUERY MENU LATERAL(ESQUERDA)--> <script type="text/javascript" src="../layuot/jquery/jquery-1.4.2.min.js"></script> <script type="text/javascript" src="../layuot/jquery/jquery.cookie.js"></script> <script type="text/javascript" src="../layuot/jquery/jquery.hoverIntent.minified.js"></script> <script type="text/javascript" src="../layuot/jquery/jquery.dcjqaccordion.2.7.min.js"></script> <!--JAVASCRIPT CONTEUDO IFRAME <script type="text/javascript" src="../layuot/jquery/controle_iframe_main.js"></script>--> <!-- JQUERY DIV DOS BOTOES INCLUIR/EDITAR/EXCLUIR --> <script type="text/javascript"> $(document).ready(function ($) { $("#rodape_grid").hide(); }); </script> <!--JQUERY MENU ESQUERDA--> <script type="text/javascript"> $(document).ready(function ($) { $('#menu_jquery_esquerda').dcAccordion({ eventType: 'click', autoClose: true, saveState: true, disableLink: false, speed: 'slow', showCount: false, autoExpand: false, cookie: 'dcjq-accordion-1', classExpand: 'sub_accordion' }); }); </script> <!-- JQUERY PREENCHENDO CONTEUDO DIV --> <script type="text/javascript"> function Chamar_Cadastro(ID_DataSource) { $(document).ready(function () { //Esconder a DIV com os botoes incluir/editar/excluir $("#rodape_grid").hide(); switch (ID_DataSource) { case "SqlDataSource_grid_cliente": $("#conteudo_grid").load("frm_cliente.aspx"); //document.getElementById("frame").src = "frm_cliente.aspx"; break; case "SqlDataSource_grid_produto": $("#conteudo_grid").load("frm_cliente.aspx"); //document.getElementById("frame").src = "frm_cliente.aspx"; break; } }); } </script> <asp:ContentPlaceHolder ID="head" runat="server"> </asp:ContentPlaceHolder> </head> <body> <form id="form1" runat="server"> <div> <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"></asp:ContentPlaceHolder> <div id = "wrap"> <div id = "cabecalho"> <div id = "logo"> </div> <div id = "login"> <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/layuot/imagens/logout.png" CssClass="input_logout"/> </div> <div id = "usuario_logado"> <h2>Usuário: <asp:Label ID="Label_usuario_logado" runat="server" Text="Usuário"></asp:Label></h2> </div> </div> <div id = "conteudo_geral"> <div id = "menu_conteudo_topo"> </div> <div id = "menu_conteudo_esquerda" class="grey demo-container"> <ul class="accordion" id="menu_jquery_esquerda"> <li class="sub_accordion"><a href="#">Cadastro</a> <ul> <li class="sub_accordion"><asp:LinkButton ID="LinkButton_Cliente" runat="server" onclick="LinkButton_Cliente_Click">Cliente</asp:LinkButton></li> <li class="sub_accordion"><asp:LinkButton ID="LinkButton_Produto" runat="server" onclick="LinkButton_Produto_Click">Produto</asp:LinkButton></li> <li class="sub_accordion"><a href="#">Produto</a></li> <li class="sub_accordion"><a href="#">Cores</a></li> <li class="sub_accordion"><a href="#">Grades</a></li> <li class="sub_accordion"><a href="#">Rotas</a></li> </ul> </li> <li><a href="#">Lançamento</a> <ul> <li class="sub_accordion"><a href="#">Pedido</a></li> </ul> </li> </ul> </div> <asp:ContentPlaceHolder ID="ContentPlaceHolder_Formularios" runat="server"> <div id = "conteudo_grid"> <asp:GridView ID="GridView_principal" runat="server" Width="755px" AutoGenerateColumns="True"> </asp:GridView> </div> </asp:ContentPlaceHolder> <asp:SqlDataSource ID="SqlDataSource_grid_cliente" runat="server" ConnectionString="<%$ ConnectionStrings:aspadmConnectionString %>" ProviderName="<%$ ConnectionStrings:aspadmConnectionString.ProviderName %>" SelectCommand="SELECT (cliente.nome) AS Nome, (cliente.tipo_pessoa) AS Fisica_Juridica, (cliente.cpf_cnpj) AS CPF_CNPJ, (cliente.tel) AS Tel, (codigouf.Cidade) AS Cidade, (codigouf.Estado) AS UF FROM cliente INNER JOIN codigouf ON codigouf.CodCidade = cliente.cod_cidade ORDER BY cliente.nome ASC"></asp:SqlDataSource> <asp:SqlDataSource ID="SqlDataSource_grid_produto" runat="server" ConnectionString="<%$ ConnectionStrings:aspadmConnectionString %>" ProviderName="<%$ ConnectionStrings:aspadmConnectionString.ProviderName %>" SelectCommand="SELECT (produto.descricao) AS Produto, (grupo_produto.descricao) AS Grupo, (subgrupo_produto.descricao) AS Sub_Grupo FROM produto INNER JOIN grupo_produto ON grupo_produto.codigo = produto.cod_grupopro INNER JOIN subgrupo_produto ON subgrupo_produto.codigo = produto.cod_subgrupopro ORDER BY produto.descricao ASC"> </asp:SqlDataSource> <div id = "rodape_grid"> <div id="botao_incluir"> <asp:ImageButton ID="ImageButton_Incluir" runat="server" ImageUrl="~/layuot/imagens/btm_inclui.png" onclick="ImageButton_Incluir_Click" /> </div> <div id="botao_editar"> <asp:ImageButton ID="ImageButton_Editar" runat="server" ImageUrl="~/layuot/imagens/btm_editar.png"/> </div> <div id="botao_excluir"> <asp:ImageButton ID="ImageButton_Excluir" runat="server" ImageUrl="~/layuot/imagens/btm_excluir.png" /> </div> </div> </div> <div id="rodape"> <br/> <h2>Empresa: Empresa Teste 00-000-000/0000-00</h2> <!--<div id = "rodape_esquerda"> <h2>Empresa: Empresa Teste 00-000-000/0000-00</h2> </div>--> <!--<div id = "rodape_centro"> </div> --> <!--<div id = "rodape_direita"> </div>--> </div> </div> <!--aki--> </div> </form> </body> </html>
Quando eu aciono a minha função jquery "Chamar_Cadastro" ela altera o conteúdo da minha DIV "conteudo_grid" dando um load assim chamando a minha outra pagina "frm_cliente.aspx". O que eu fiz foi adicionar a minha DIV "conteudo_grid" dentro do ContentPlaceHolder que eu criei chamado "ContentPlaceHolder_Formularios" tentando assim sem sucesso que os postbacks da "frm_cliente.aspx" fossem realizados apenas no conteúdo definido pela "ContentPlaceHolder_Formularios", e não na master-page.
-
Allan, Bom dia
A sua pagina frm_cliente.aspx é um webform usando a master page?
Bruno Viegas D. Ribeiro
Nunca abandone sua thread!
- Se alguma resposta resolveu seu problema marque-a como resposta para que possa ajudar outras pessoas.
- Se a resposta não resolveu, mas ajudou a você chegar a sua resposta Marque-a como útil. -
Bom Dia Bruno
Não. Ela e uma pagina que não referencia nenhuma master-page. A frm_cliente.aspx apenas e chamada via o codigo contido na master-page acima.
Meu sistema esta dividido em:
1 - maste-page(Contém o ContentPlaceHolder id = "ContentPlaceHolder_Formularios")
2 - home.aspx(Esta não possui código algum, apenas a referência para a master-page)
3 - Páginas de cadastro(frm_cliente.aspx, frm_produto.aspx .....)
-
Allan,
Estava pensando que a pagina usava a master-page,
Neste caso, eu usuario o updatepanel
ele só vai atualizar o trecho de código que esta dentro dele
Bruno Viegas D. Ribeiro
Nunca abandone sua thread!
- Se alguma resposta resolveu seu problema marque-a como resposta para que possa ajudar outras pessoas.
- Se a resposta não resolveu, mas ajudou a você chegar a sua resposta Marque-a como útil. -
Bruno, existe um empecilho para o uso do updatepanel, a "GridView".
Tentei usar o UpdatePanel sendo que constatei um problema. É que o mesmo não trabalha com GridView sendo que além das páginas que eu vou estar carregando dentro do UpdatePanel, eu teria de estar exibindo a GridView referente a opção que via linkbutton o usuário teria selecionado, pois ai o linkbutton chamaria o gridview e atraves de um botão incluir ai sim eu estaria carregando a pagina cadastro dentro da master-page no mesmo lugar onde antes estava o gridView. Ou seja clico em um link de cadastro, me é aberta a gridview com a exibição dos dados cadastrados referentes àquele link, e atraves de um botão incluir, a pagina de cadastro(cliente, produto etc) referente ao gridview estaria sendo abertas onde antes era ele.
No caso o componente que eu for usar terá de aceitar tanto gridview, quanto o postback das paginas de cadastro.
-
Allan,
Tem algo que te impeça de fazer esse form usando a master-page?
Bruno Viegas D. Ribeiro
Nunca abandone sua thread!
- Se alguma resposta resolveu seu problema marque-a como resposta para que possa ajudar outras pessoas.
- Se a resposta não resolveu, mas ajudou a você chegar a sua resposta Marque-a como útil. -
-
Allan, você poderia criar sua outas paginas, a frm_cliente.aspx por exemplo
usando as caracteristicas da master page, normalmente é feito assim
Bruno Viegas D. Ribeiro
Nunca abandone sua thread!
- Se alguma resposta resolveu seu problema marque-a como resposta para que possa ajudar outras pessoas.
- Se a resposta não resolveu, mas ajudou a você chegar a sua resposta Marque-a como útil.- Marcado como Resposta Allan d.s segunda-feira, 24 de setembro de 2012 12:19
-
Buno,
Esta e uma alternativa, mais eu teria de estar realizando modificações nas minhas paginas de cadastro.
Eu havia citado não ter conseguido utilizar o updatepanel com o gridview, mais depois de alguns testes funcionou. Acho que no meu caso ele vai ser a melhor alternativa. Mais para isso tenho de conseguir fazer com que a minha pagina de cadastro que foi aberta dentro dele realize o postback para ela mesma e não para a pagina onde ela foi aberta dentro. Vc sabe se o updatepanel me dá esta possibilidade ?
-
Allan,
Deixe seu a propriedade updatemode como Condicional
Bruno Viegas D. Ribeiro
Nunca abandone sua thread!
- Se alguma resposta resolveu seu problema marque-a como resposta para que possa ajudar outras pessoas.
- Se a resposta não resolveu, mas ajudou a você chegar a sua resposta Marque-a como útil. -
Boa Tarde Allan ,
Acho que você deveria fazer oq o Bruno disse ,
e usar todos os seus forms como filhos da master page ,
e pelo que entedi você quer usar o seu Griview como uma janela modal para isso você poderia usar
http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/ModalPopup/ModalPopup.aspx
se não for necessário ser um modal você poderia usar o controle detailview
http://www.juliobattisti.com.br/tutoriais/fabiomans/gridviewdetailsview001.asp
que pode ser usado com grid ou com repeater/datalist ou com formsView
http://www.devmedia.com.br/personalizando-campos-no-detailsview-do-asp-net/6047
Se for útil marcar como resposta Para que outros Aproveitem
-