GridView.DataSource com campo referenciado - trocar o seu ID pelo nome
16/06/2012
0
Aqui chamo uma dropdownlist com categorias e uma gridview com todos os produtos.
Na gridview me retornam todos os produtos, mas no campo Produto_Categoria, ele me traz o ID da Categoria, já que na tabela produto ele referencia ao ID da tabela Categoria.
if (!IsPostBack)
{
ddlCategorias.DataTextField = Categoria_Nome;
ddlCategorias.DataValueField = Categoria_ID;
DataTable dt = cdb.GetAllCategorias();
ddlCategorias.DataSource = dt;
ddlCategorias.DataBind();
gridProduto.DataSource = pdb.GetAllProdutos(usuario.ID);
gridProduto.DataBind();
}
Gostaria que no campo da categoria me viesse seu nome e não o ID, há alguma maneira de trazer direto o nome para a gridview?
Ou fazer uma conversão via código mesmo?
OBS: Uso C#
Desde já agradeço!
André Moes
Posts
16/06/2012
Fabio Rosa
Para ficar mais claro, o seu GridView está gerando colunas automaticamente? (Propriedade AutoGenerateColumns=True no formulário).
Caso não, basta você retirar a coluna que não deseja no source do gridview.
Caso sim, que acho que é o seu caso... Talvez seria interessante você alterar para não criar as colunas automaticamente....Desta forma você pode especificar somente as colunas que deseja no gridview... por exemplo
<asp:DataGrid ID=DefaultGrid Runat=server AutoGenerateColumns=False> <Columns> <asp:BoundColumn DataField=Index ReadOnly=True HeaderText=#> </asp:BoundColumn> <asp:BoundColumn DataField=Description ReadOnly=True HeaderText=Description> </asp:BoundColumn> </Columns> </asp:DataGrid>
Verifique este link também, para esclarecer mais sobre esta propriedade:
http://msdn.microsoft.com/pt-br/library/system.web.ui.webcontrols.gridview.autogeneratecolumns.aspx
Abraço.
17/06/2012
André Moes
Para ficar mais claro, o seu GridView está gerando colunas automaticamente? (Propriedade AutoGenerateColumns=True no formulário).
Caso não, basta você retirar a coluna que não deseja no source do gridview.
Caso sim, que acho que é o seu caso... Talvez seria interessante você alterar para não criar as colunas automaticamente....Desta forma você pode especificar somente as colunas que deseja no gridview... por exemplo
<asp:DataGrid ID=DefaultGrid Runat=server AutoGenerateColumns=False> <Columns> <asp:BoundColumn DataField=Index ReadOnly=True HeaderText=#> </asp:BoundColumn> <asp:BoundColumn DataField=Description ReadOnly=True HeaderText=Description> </asp:BoundColumn> </Columns> </asp:DataGrid>
Verifique este link também, para esclarecer mais sobre esta propriedade:
http://msdn.microsoft.com/pt-br/library/system.web.ui.webcontrols.gridview.autogeneratecolumns.aspx
Abraço.
Estou especificando a coluna sim, o caso é que uma delas se chama categoria e no banco de dados está referenciada a tabela categoria, ou seja, na tabela do produto ele tem apenas o código da categoria, e eu queria que ele mostrasse o nome na gridview quando ele me retorna do banco de dados, sei que há uma maneira, mas não sei como rsrs
16/11/2012
Daniel Lima
19/11/2012
André Moes
Consegui sim!
Mas não tenho o código no momento...
A solução não é em código c# e sim pelo SQL
Procure dar uma olhada em InnerJoin, ele é uma função no SQL que "junta" dados de uma tabela em outra!
Podendo assim pegar dados de duas tabelas!
Vou ver se hoje a noite encontro o código em casa para postar!
07/12/2012
André Moes
SELECT P.SIGLA, P.PAIS, A.SIGLAAEROPORTO, A.NOME, A.EXTENSAO, A.ELEVACAO, A.GMT, A.LATITUDENORTESUL, A.LATITUDEGRAUS, A.LATITUDEMINUTO, A.LATITUDESEGUNDO, A.LONGITUDELESTEOESTE, A.LONGITUDEGRAUS, A.LONGITUDEMINUTO, A.LONGITUDESEGUNDO
FROM AEROPORTOS AS A INNER JOIN PAISES AS P ON (A.PAIS = P.CODIGO) WHERE P.SIGLA LIKE '%@SIGLAPAIS%'
comando.Parameters.AddWithValue("@SIGLAPAIS", filtro.SiglaPais);
Aqui está a solução!
Essa parte define o Inner Join, relacionando o código no Aeroportos.Pais com o Paises.Pais
< AEROPORTOS AS A INNER JOIN PAISES AS P ON (A.PAIS = P.CODIGO) >
além de criar um "apelido" para Aeroportos == A e Paises == P
Esse é um relacionamento apenas para trazer do banco de dados em uma única tabela o coteúdo de duas, sendo que uma referência a outra!
Clique aqui para fazer login e interagir na Comunidade :)