Inquiridor
Localiza um componente contido em um WebControl carregado em um UpdatePanel.

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!