Exibir property na GridView

21/09/2010

0

Boa tarde, Estou com a seguinte dúvida. Tenho um objeto Banco, que possui os atributos e propriedades para idBanco e NomeBanco. Tenho um objeto ContaBancaria, que possui um atributo do tipo Banco.   No form tenho uma gridview onde quero listar as contas bancárias cadastradas, e numa das colunas quero mostrar o nome do banco, que não é uma propriedade de ContaBancaria, mas sim de Banco, que por sua vez é uma propriedade de ContaBancaria.   Adicionei um bindingsource, e vinculei o ObjectDataSource dele com a classe ContaBancaria. Na hora de configurar as colunas ele encherga o atributo do tipo Banco, mas os atributos da classe Banco, como Nome do Banco, não aparecem disponíveis. Como faço para mostrar na grid esta informação?     Obrigado !
Gustavo Marcon

Gustavo Marcon

Responder

Posts

22/09/2010

Vinicius Vieira

Parceiro,Quer um conselho?Faz um select dando um join nas duas tabelas e trazendo somente os campos que precisa nele e alimenta um datatable ai você joga no binding source.Pra mim seria o jeito mais fácil, pode ser que outras pessoas tenham outras sugestões.Espero ter ajudado.
Responder

22/09/2010

Gustavo Marcon

Pois é, dessa forma que eu venho fazendo, mas fiquei encucado. Pensei, se os objetos tem atributos do tipo de outros objetos, seria interessante poder usar eles para apresentar as informações também, por isso imagino que deve ter alguma forma.   Bom, enquanto não encontro como fazer, vou continuar fazendo com DataTable mesmo. Valeu !
Responder

22/10/2010

Marcus Meirelles

Estava com esse mesmo problema e resolvi da seguinte maneira, edita as colunas do seu gridview, e converte seu field em template, depois vai em edit template, e no item de template vai em edit databindings, ai vai na opção text e coloca no campo custom bindings a expressão:  Bind("Objetofilho.atributo")  e vai funcionar.   Abraços   Marcus
Responder

25/10/2010

Netasper

Gustavo,

Também ja me deparei com este tipo de problema, para resolver, criei uma classe, que agora sem uso um meus projetos, segue a solução:

namespace CustomControls
{
    public class CompositeBoundField : BoundField
    {
        protected override object GetValue(Control controlContainer)
        {
            object item = DataBinder.GetDataItem(controlContainer);
            return DataBinder.Eval(item, this.DataField);
        }
    }
}


E no grid view:

        <asp:GridView ID="gvRegistros" runat="server" AutoGenerateColumns="False" OnRowDataBound="gvRegistros_RowDataBound"
            OnPageIndexChanging="gvRegistros_PageIndexChanging">
            <Columns>
                <cc:CompositeBoundField DataField="Categoria.NomCategoria" HeaderText="Categoria" />


E no web.config:
    <pages theme="Admin">
      <controls>
       
        <!-- DICA PARA EVAL NOS GRIDVIEWS -->
        <add assembly="INTERFACE" namespace="CustomControls" tagPrefix="cc"/>
       
                <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            </controls>
        </pages>

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar