Fórum Trabalhando com o WebUser Control #14431

22/01/2010

0

Olá,


Nas minhas aplicações, algumas vezes preciso trabalhar com vários sistemas em uma mesma Página Web,  normalemnte para realizar pesquisas em várias tabelas e trazer resultados,

por exemplo como um cadastro de pedido,

é necessário o Cliente, o Vendedor, os Produtos.

o WebUserControl resolve este meu problema???   ele evita vários POSTBACK nas páginas??


minha maior dúvida na tentativa que fiz foi o seguinte?


Como conseguir enviar um código ( ou campo determinado) para o WebUser Control?

Como conseguir que esta página que enviou o Campo receba o resultado determinado do User Control ( como uma linha de grid por exemplo?
Fernando Reis

Fernando Reis

Responder

Posts

22/01/2010

Luiz Maia

Tem varias maneiras Fernando, a mais aconselhada é usar um interface para isto. Faça um classe de interface para o uc:   public interface IDados
{
    string Valor { get; set; }
}     Implemente a interface no seu ASCX:

 public partial class Dados : System.Web.UI.UserControl, IDados
{
    public string Valor
    {
        get
        {
            return this.Label1.Text;
        }
        set
        {
            this.Label1.Text = value;
        }
    }
}    
Na sua página ASPX, faz:

    protected void Page_Load(object sender, EventArgs e)
    {
        Control ctl = LoadControl("Dados.ascx");
        IDados d = ctl as IDados;
        if (d != null)
            d.Valor = "Israel";         this.Controls.Add(ctl);
    }   Outra mais facil é criar uma Propriedade (get set) e jogar o valor dentro desta propriedade.   Outra forma é passar o parametro explicitamente via querystring.     Abraços Att Luiz MAia
Responder

Gostei + 0

22/01/2010

Fernando Reis

Luiz,


Apanhei feio!!  kkkkk

veja só quero criar uma Consulta de empresa e assim poder usar esta em várias páginas ok?

se manda por querystring, tenho que definir em todo o momento o nome das páginas.

por isto pensei em referenciar um campo da pagina aspx  e retornar o valor do select feito no ascx.


Veja até onde cheguei em um exemplo vem simples:



default.aspx:

HTML
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Src="~/uc_Company.ascx" TagName="FindCompany"  TagPrefix="uc1"%>
<!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">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
   
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        Company :
        <asp:TextBox ID="txtCompany" runat="server"></asp:TextBox>
        <asp:ImageButton ID="ImageButton1" runat="server" Height="17px"
            ImageUrl="~/viewmag+.png" Width="19px" />
        <asp:Panel ID="Panel1" runat="server">
            <uc1:FindCompany ID="find1" runat="server" />
        </asp:Panel>
   
    </div>
    </form>
</body>
</html>

code:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Control ctl = LoadControl("uc_Company.ascx");
        IDados d = ctl as IDados; (aqui ele não encontra o IDados)
        if (d != null)
            d.Valor = "Israel";

        this.Controls.Add(ctl);

    }
}






uc_Company.ascx
HTML

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="uc_Company.ascx.cs" Inherits="uc_Company" %>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
    DataKeyNames="CustomerID" DataSourceID="dsCompany">
    <Columns>
        <asp:CommandField ShowSelectButton="True" />
        <asp:BoundField DataField="CustomerID" HeaderText="CustomerID" ReadOnly="True"
            SortExpression="CustomerID" />
        <asp:BoundField DataField="CompanyName" HeaderText="CompanyName"
            SortExpression="CompanyName" />
    </Columns>
</asp:GridView>
<asp:SqlDataSource ID="dsCompany" runat="server"
    ConnectionString="<%$ ConnectionStrings:csNorthWind %>"
    SelectCommand="SELECT [CustomerID], [CompanyName] FROM [Customers]">
</asp:SqlDataSource>



CODE:

(DE ACORDO COM O EXEMPLO QUE ME MANDOU, MAS NÃO SEI SE ESTA CORRETO)

public interface IDados  ( ESTA PARTE TEM QUE IR EM LOCAL SEPARADO?)
    {
        string Valor { get; set; }
    }

public partial class uc_Company : System.Web.UI.UserControl,IDados
{

    public string Valor
    {
        get
        {
            return this.GridView1.SelectedRow.Cells[1].Text.ToString();
        }
        set
        {
            this..GridView1.SelectedRow.Cells[1].Text.ToString() = value;
        }
    }
   
    protected void Page_Load(object sender, EventArgs e)
    {

    }
  
}




Quero muito enteder o conceito de enviar e receber os parâmetros pois acredito ser mais fácil sua utilização,


Obrigado pela ajuda,


no Seu Aguardo!





Responder

Gostei + 0

25/01/2010

Luiz Maia

Fernando,   Vou montar um exemplo prático e te mando o link para baixar, ok?   Abraços Att Luiz Maia
Responder

Gostei + 0

27/01/2010

Fernando Reis

grande Luiz,


Não se esqueça de mim, ok

kk

Responder

Gostei + 0

27/01/2010

Luiz Maia

Ola Fernando,   Esta aqui funcionando. Execute o projeto, preencha dados na Textbox, que se encontra no UC, e depois clique no botão. Verá que o valor da Textbox do UC passa para a Label dentro do Form.   http://video.devmedia.com.br/discovirtual/200237/TesteUserControl.zip   Caso não entenda alguma coisa, me diga, ok?   Abraços Att Luiz Maia
Responder

Gostei + 0

27/01/2010

Fernando Reis

Luiz,



Desculpe,   mas não é o que preciso,

Acredito não ter me expressado bem.


Voce tem um banco northwind???   posso postar um exemplo bem simples??

Responder

Gostei + 0

27/01/2010

Luiz Maia

Pode me passar que instalo aqui o NorthWind sem problemas.
Responder

Gostei + 0

27/01/2010

Fernando Reis

Vou fazer um simples com os detalhes de como Preciso,


Responder

Gostei + 0

27/01/2010

Fernando Reis

Luiz.


Coloquei um exemplo utilizado o ModalPopUpExtender,

oque eu quero fazer é o mesmo exemplo, só que invés de usar o Panel e o próprio Modal,   quero transformar este em WebUserControl,

Motivo: esta "pesquisa de empresa"  vou precisar usar em outras páginas onde o resultado será a retorno do campo   "EMPRESA".

Obrigado,

link: http://video.devmedia.com.br/discovirtual/175404/WebUser/WebUserControl-I.zip
Responder

Gostei + 0

28/01/2010

Luiz Maia

Blz, Fernando, vou dar uma olhada aqui e assim que tiver uma resposta, posto aqui ok?   Abraços Att Luiz Maia
Responder

Gostei + 0

31/01/2010

Luiz Maia

Fernando, Dei uma olhada aqui e é o seguinte: Não tem como colocar so o painel dentro do UC, pois vc precisa do ID botão para acionar o modal. Por que você não coloca tudo la dentro, inclusive o textbox de empresa e depois é so usar o exemplo que te passei abaixo para recuperar a empresa, pode tambem usar um input type hidden para guardar o ID da empresa selecionada, ok? Veja o exemplo: http://video.devmedia.com.br/discovirtual/200237/WebUserControl-I.zip
Abraços
Att
Luiz Maia
Responder

Gostei + 0

01/02/2010

Fernando Reis

Vou testar Luiz,

Grato
Responder

Gostei + 0

04/02/2010

Luiz Maia

Ok. Fico no aguardo Fernando.   Abraços Att Luiz Maia
Responder

Gostei + 0

18/02/2010

Luiz Maia

E ai Fernando, como esta indo?
Responder

Gostei + 0

02/03/2010

Luiz Maia

Fernando, como não obtivemos resposta, estamos concluindo o chamado. Sinta-se a vontade para reabri-lo caso a duvida persista, ok? Abraços Att
Luiz Maia
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar