none
Localiza um componente contido em um WebControl carregado em um UpdatePanel. RRS feed

  • Pergunta

  • Salve pessoal, negócio é o seguinte:

    Tenho uma página .aspx que contém um dropdownlist, um updatepanel e um button.

    Possuo também 3 webcontrol que possui contoles, como textbox, dropdown, etc.

    Conforme a seleção do dropdownlist, é carregado assincronamente no updatepanel algum dos webcontrols. Até aí tudo beleza, acontece que, quando eu clicar no botão contido na página, gostaria de armazenar o valor contido nos controles que vieram junto do webcontrol, dae a coisa complicou, não consigo pegar esses valores. Vou postar meu código para uma análise:

    pagina .aspx:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="cobrancas.aspx.cs" Inherits="app.admin.pages.pagamentos" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <link href="../css/style.css" rel="stylesheet" />
    </head>
    <body style="font-family: Arial; font-size: 14px; font-weight: bolder; background-color: #e8e2e2; color: gray">
        <form id="form1" runat="server">
            <div>
                <h3>Cobrança</h3>
                <asp:Label ID="lblNomeCli" runat="server"></asp:Label><br />
                <br />
                <asp:Label ID="lblEndereco" runat="server"></asp:Label><br />
                <br />
                Tipo de Pagamento:<asp:DropDownList ID="droptipoPagamento" runat="server" AutoPostBack="true" OnTextChanged="droptipoPagamento_TextChanged"></asp:DropDownList><br />
                <br />
                Valor:<asp:TextBox ID="txtValor" runat="server"></asp:TextBox><br />
                <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
                <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
                    <ContentTemplate>
                        <asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1">
                            <ProgressTemplate>
                                Espere....
                            </ProgressTemplate>
                        </asp:UpdateProgress>
                        <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
                    </ContentTemplate>
                    <Triggers>
                        <asp:AsyncPostBackTrigger ControlID="droptipoPagamento" />
                    </Triggers>
                </asp:UpdatePanel>
                
                Nota Fiscal?<asp:DropDownList ID="dropNota" runat="server">
                    <asp:ListItem Value="0" Text="SIM"></asp:ListItem>
                    <asp:ListItem Value="1" Text="NÃO" Selected="True"></asp:ListItem>
                </asp:DropDownList>
                <asp:Label ID="lblNroNota" runat="server" Text=""></asp:Label>
                <asp:TextBox ID="txtNroNota" runat="server" Visible="false"></asp:TextBox><br />
                <br />
                Identificação do Recebimento:<asp:TextBox ID="txtIdentPag" runat="server"></asp:TextBox><br />
                <br />
                Observações:<asp:TextBox ID="txtObservacao" runat="server" TextMode="MultiLine"></asp:TextBox><br />
                <br />
                <asp:Button ID="btnAltera" runat="server" Text="Concuir" OnClick="btnAltera_Click" />
            </div>
        </form>
    </body>
    </html>
    

    pagina .aspx.cs

    using BLL;
    using FNC;
    using MDL;
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace app.admin.pages
    {
    
        public partial class pagamentos : System.Web.UI.Page
        {
            private const string BASE_PATH = "../controls/";
            private string LastLoadedControl
            {
                get
                {
                    return ViewState["LastLoaded"] as string;
                }
                set
                {
                    ViewState["LastLoaded"] = value;
                }
            }
            private void LoadUserControl()
            {
                string controlPath = LastLoadedControl;
    
                if (!string.IsNullOrEmpty(controlPath))
                {
                    PlaceHolder1.Controls.Clear();
                    UserControl uc = (UserControl)LoadControl(controlPath);
                    PlaceHolder1.Controls.Add(uc);
                }
            }
            private enum cobranca
            {
                ENTREGA = 0,
                RETIRADA = 1,
                ESCRITÓRIO = 2
            }
            private enum tipo_pagamento
            {
                Selecione = 0,
                BOLETO = 1,
                CARTAO = 2,
                CHEQUE = 3,
                DEPOSITO = 4,
                DINHEIRO = 5,
                OUTROS = 6
            }
            protected int idLoc = 0;
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    idLoc = int.Parse(Request.QueryString["id"].ToString());
                    Session["idLoc"] = idLoc.ToString();
                    carregaInfos();
                }
            }
            protected void carregaInfos()
            {
                sys_clientesMDL mdlCli = new sys_clientesMDL();
                sys_enderecosMDL mdlEnd = new sys_enderecosMDL();
                sys_locacoesMDL mdlLoc = new sys_locacoesMDL();
    
                try
                {
                    mdlLoc = sys_locacoesBLL.MostrarBLL(idLoc);
                    mdlEnd = sys_enderecosBLL.MostrarBLL(mdlLoc.SYS_ENDERECO_ID);
                    mdlCli = sys_clientesBLL.MostrarBLL(mdlEnd.SYS_CLIENTES_ID);
                }
                catch (Exception er)
                {
                    throw er;
                }
    
                lblNomeCli.Text = mdlCli.NOME;
                lblEndereco.Text = mdlEnd.ENDERECO;
                txtValor.Text = mdlLoc.VALOR.ToString();
                droptipoPagamento.DataSource = Enum.GetNames(typeof(tipo_pagamento));
                droptipoPagamento.DataBind();
            }
            protected void droptipoPagamento_TextChanged(object sender, EventArgs e)
            {
                string controlPath = string.Empty;
    
                if (droptipoPagamento.SelectedValue == "BOLETO")
                {
                    controlPath = BASE_PATH + "boleto.ascx";
                }
                else if (droptipoPagamento.SelectedValue == "CHEQUE")
                {
                    controlPath = BASE_PATH + "cheque.ascx";
                }
                else if (droptipoPagamento.SelectedValue == "DEPOSITO")
                {
                    controlPath = BASE_PATH + "deposito.ascx";
                }
                else if (droptipoPagamento.SelectedValue == "CARTÃO")
                {
                    controlPath = BASE_PATH + "cartao.ascx";
                }
                else if (droptipoPagamento.SelectedValue == "DINHEIRO")
                {
                    controlPath = BASE_PATH + "dinheiro.ascx";
                }
                LastLoadedControl = controlPath;
                LoadUserControl();
            }
            protected void btnAltera_Click(object sender, EventArgs e)
            {
                sys_pagamentosMDL mdlLocal = new sys_pagamentosMDL();
                sys_notasMDL mdlNota = new sys_notasMDL();
    
                if (droptipoPagamento.SelectedValue == "BOLETO")
                {
                    DropDownList dropBanco = (DropDownList)UpdatePanel1.FindControl("dropBanco"); //tentei com este comando, e nada
                    TextBox txtNroBoleto = (TextBox)form1.FindControl("txtNroBoleto"); //tentei com este comnado tb e NADA!!!!
                    TextBox txtVencBoleto = (TextBox)form1.FindControl("txtVencBoleto");
                }
                else if (droptipoPagamento.SelectedValue == "CHEQUE")
                {
                    DropDownList dropBancos = (DropDownList)form1.FindControl("dropBancos");
                    TextBox txtNroCheque = (TextBox)form1.FindControl("txtNroCheque");
                    TextBox txtNomeCheque = (TextBox)form1.FindControl("txtNomeCheque");
                    TextBox txtCpf = (TextBox)form1.FindControl("txtCpf");
                    TextBox txtDataCompensacao = (TextBox)form1.FindControl("txtDataCompensacao");
                }
                else if (droptipoPagamento.SelectedValue == "DEPOSITO")
                {
                    DropDownList dropBanc = (DropDownList)form1.FindControl("dropBanc");
                }
                mdlLocal.ID = idLoc;
                mdlLocal.TIPO_PAGAMENTO = droptipoPagamento.SelectedValue;
                mdlLocal.SYS_LOCACOES_ID = idLoc;
                mdlLocal.OBSERVACOES = txtObservacao.Text;
                
                try
                {
                    sys_pagamentosBLL.AtualizarBLL(mdlLocal);
                }
                catch (Exception er)
                {
                    throw er;
                }
    
                if (dropNota.SelectedValue == "SIM")
                {
                    mdlNota.SYS_PAGAMENTOS_ID = sys_FNCBLL.retornaUltimoIdBLL("id", "sys_pagamentos");
    
                    try
                    {
                        sys_notasBLL.InserirBLL(mdlNota);
                    }
                    catch (Exception er)
                    {
                        throw er;
                    }
                }
            }
        }
    }

    webcontrol (no exemplo boleto.ascx):

    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="boleto.ascx.cs" Inherits="app.admin.controls.boleto" %>
    Banco:<asp:DropDownList ID="dropBanco" runat="server">
        <asp:ListItem Value="1">041-Banrisul</asp:ListItem>
        <asp:ListItem Value="2">104-Caixa Econômica Federal</asp:ListItem>
    </asp:DropDownList><br />
    Número do Boleto:<asp:TextBox ID="txtNroBoleto" runat="server"></asp:TextBox><br />
    Venciento do Boleto:<asp:TextBox ID="txtVencBoleto" runat="server"></asp:TextBox><br />

    Se alguém tiver uma "LUZ" pra me passar, fico grato!!!!!


    Se não conseguir vencer pelo talento, vença pelo esforço!

    quarta-feira, 31 de julho de 2013 15:07