none
Realizar postback de uma pagina que esta dentro da masterpage RRS feed

  • 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

    quarta-feira, 19 de setembro de 2012 19:28

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
    quinta-feira, 20 de setembro de 2012 18:22
  • Vou seguir o conselho do Bruno pq não ta dando, sendo que a forma que ele orientou também vai estar me atendendo.
    • Marcado como Resposta Allan d.s segunda-feira, 24 de setembro de 2012 12:20
    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.

    quarta-feira, 19 de setembro de 2012 20:09
  • 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.

    quarta-feira, 19 de setembro de 2012 20:44
  • 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.

    quinta-feira, 20 de setembro de 2012 11:05
  • 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 .....) 

    quinta-feira, 20 de setembro de 2012 12:36
  • 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.

    quinta-feira, 20 de setembro de 2012 14:40
  • 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.

    quinta-feira, 20 de setembro de 2012 16:51
  • 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.

    quinta-feira, 20 de setembro de 2012 17:31
  • Bruno,

    Não. Uso a master-page apenas por opção, até pesei em passar o código dela para o home.aspx e utiliza-lo sem a master-page.

    quinta-feira, 20 de setembro de 2012 18:06
  • 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
    quinta-feira, 20 de setembro de 2012 18:22
  • 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 ?

    sábado, 22 de setembro de 2012 14:33
  • 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.

    sábado, 22 de setembro de 2012 16:50
  • 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

    sábado, 22 de setembro de 2012 19:23
  • Vou seguir o conselho do Bruno pq não ta dando, sendo que a forma que ele orientou também vai estar me atendendo.
    • Marcado como Resposta Allan d.s segunda-feira, 24 de setembro de 2012 12:20
    segunda-feira, 24 de setembro de 2012 12:19