Exibindo dados na Vertical
Prezados;
Preciso montar uma consulta que exiba os dados de alunos de uma determinada turma e as notas obtidas nas provas de cada matéria que estuda.
Seria algo assim:
Nome do Aluno Materia1 Materia2 MateriaN
João das Couves 5,0 7,0 8,0
Pedro de Souza 6,0 5,5 6,0
Rosangela da Silva 2,0 3,0 5,0
A tabela acima possui os seguintes campos: CodAluno, CodMateria, Media (podendo um aluno fazer N matérias).
Existe algum objeto que eu possa utilizar que me possibilite fazer essa consuta?
Indemberge
Indemberge Santos
Curtidas 0
Respostas
Fabio Mans
09/09/2009
Utilize o GridView ou Repeater.
Faça o seguinte, monte o HTML em seguida coloque os valores em um TemplateColumn.
Sua tabela será criado na área em negrito.
Veja um exemplo
<asp:Repeater ID="OcorrenciaRpt" runat="server">
<HeaderTemplate>
<table border="0" cellpadding="2" cellspacing="0" width="100%" style="font: verdana">
</HeaderTemplate>
<ItemTemplate>
<tr>
<td width="100%">
<%# Eval("MatriculaInclusao")%>
- <b>
<%# Eval("FUNCIONARIO") %>
</b>
</td>
</tr>
<tr>
<td width="100%">
<%# DataBinder.Eval(Container.DataItem, "DATAINCLUSAO") %>
<br />
<%# DataBinder.Eval(Container.DataItem, "OCORRENCIANOME") %>
</b>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
Fabio
Veja um exemplo
<asp:Repeater ID="OcorrenciaRpt" runat="server">
<HeaderTemplate>
<table border="0" cellpadding="2" cellspacing="0" width="100%" style="font: verdana">
</HeaderTemplate>
<ItemTemplate>
<tr>
<td width="100%">
<%# Eval("MatriculaInclusao")%>
- <b>
<%# Eval("FUNCIONARIO") %>
</b>
</td>
</tr>
<tr>
<td width="100%">
<%# DataBinder.Eval(Container.DataItem, "DATAINCLUSAO") %>
<br />
<%# DataBinder.Eval(Container.DataItem, "OCORRENCIANOME") %>
</b>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
Fabio
GOSTEI 0
Indemberge Santos
09/09/2009
Fábio;
Não entendi direito, eu não utilizei ainda o Repeater, você pode me explicar melhor?
Obrigado;
Indemberge
GOSTEI 0
Indemberge Santos
09/09/2009
Fábio;
Na verdade eu me expressei mal no enunciado do chamado, não é "Exibindo dados na Vertical" e sim "Exibindo dados na Horizontal", ou seja, preciso exibir as notas de todas as matérias de alunos de uma determinada turma na horizontal.
Um abraço,
Indemberge
GOSTEI 0
Fabio Mans
09/09/2009
Você já fez a Query, esta retornando os dados que você precisa?
Se sim, monta um HTML, sem se preocupar com os dados como você quer que fique seus dados. Assim que fizar me passo o HTML que te mostro.
Fabio
Se sim, monta um HTML, sem se preocupar com os dados como você quer que fique seus dados. Assim que fizar me passo o HTML que te mostro.
Fabio
GOSTEI 0
Indemberge Santos
09/09/2009
Fábio,
Segue abaixo meu código:
<asp:Repeater ID="RptMapao" runat="server">
<HeaderTemplate>
<table border="0" cellpadding="2" cellspacing="0" width="100%" style="font: verdana">
</HeaderTemplate>
<ItemTemplate>
<tr>
<td width="100%">
<%#Eval("CodAluno")%>
<%#Eval("Nome")%>
</td>
</tr>
<tr>
<td> <%#DataBinder.Eval(Container.DataItem, "Descricao")%>
<%#DataBinder.Eval(Container.DataItem, "MB1")%>
<%#DataBinder.Eval(Container.DataItem, "MB1Rv")%>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
Os dados estão sendo exibidos assim: 312116 DANIT LEA LANDER
Língua Portuguesa e Literatura 8,7 0
312116 DANIT LEA LANDER
Educação Física 8 0
312116 DANIT LEA LANDER
Artes 10 0
312116 DANIT LEA LANDER
Física 6,5 7,2
312116 DANIT LEA LANDER
Química 7 0
312116 DANIT LEA LANDER
Biologia 10 0
312116 DANIT LEA LANDER
Matemática e Lógica 8,8 0
312116 DANIT LEA LANDER
História 9 0
312116 DANIT LEA LANDER
Geografia 7,8 0
312116 DANIT LEA LANDER
Filosofia 10 0
312116 DANIT LEA LANDER
Sociologia 8,5 0
312116 DANIT LEA LANDER
Lingua Estrangeira 9 0 E eu gotaria que fosse algo assim, sendo que todos os dados em uma única linha: 312116 DANIT LEA LANDER Língua Portuguesa e Literatura 8,7 0 Educação Física 8 0 Artes 10 0 Física 6,5 7,2 Química 7 0 Biologia 10 0 Matemática e Lógica 8,8 0 História 9 0 Geografia 7,8 0 Filosofia 10 0 Sociologia 8,5 0 Lingua Estrangeira 9 0 Gostaria de colocar umas imagens, mas deu erro na hora de fazer o upload... Indemberge
<HeaderTemplate>
<table border="0" cellpadding="2" cellspacing="0" width="100%" style="font: verdana">
</HeaderTemplate>
<ItemTemplate>
<tr>
<td width="100%">
<%#Eval("CodAluno")%>
<%#Eval("Nome")%>
</td>
</tr>
<tr>
<td> <%#DataBinder.Eval(Container.DataItem, "Descricao")%>
<%#DataBinder.Eval(Container.DataItem, "MB1")%>
<%#DataBinder.Eval(Container.DataItem, "MB1Rv")%>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
Os dados estão sendo exibidos assim: 312116 DANIT LEA LANDER
Língua Portuguesa e Literatura 8,7 0
312116 DANIT LEA LANDER
Educação Física 8 0
312116 DANIT LEA LANDER
Artes 10 0
312116 DANIT LEA LANDER
Física 6,5 7,2
312116 DANIT LEA LANDER
Química 7 0
312116 DANIT LEA LANDER
Biologia 10 0
312116 DANIT LEA LANDER
Matemática e Lógica 8,8 0
312116 DANIT LEA LANDER
História 9 0
312116 DANIT LEA LANDER
Geografia 7,8 0
312116 DANIT LEA LANDER
Filosofia 10 0
312116 DANIT LEA LANDER
Sociologia 8,5 0
312116 DANIT LEA LANDER
Lingua Estrangeira 9 0 E eu gotaria que fosse algo assim, sendo que todos os dados em uma única linha: 312116 DANIT LEA LANDER Língua Portuguesa e Literatura 8,7 0 Educação Física 8 0 Artes 10 0 Física 6,5 7,2 Química 7 0 Biologia 10 0 Matemática e Lógica 8,8 0 História 9 0 Geografia 7,8 0 Filosofia 10 0 Sociologia 8,5 0 Lingua Estrangeira 9 0 Gostaria de colocar umas imagens, mas deu erro na hora de fazer o upload... Indemberge
GOSTEI 0
Indemberge Santos
09/09/2009
Fábio;
Realizei vários testes utilizando: Repeater, DataList e Gridview. O único que consegui exibir os dados no horizontal mais ou menos como preciso foi o DataList, contudo ele exibiu os dados na horizontal continuamente.
Veja a imagem abaixo do Gridview:
Gostaria que ficasse assim: IBM, Nome, Componente1 (MB1, Rv1), Componente2 (MB1, Rv1), ComponenteN...
Deu pra entender?
Abraço,
Indemberge
GOSTEI 0
Fabio Mans
09/09/2009
Veja um exemplo, o segredo é a tabela, monte um table com uma tr e um td.
protected void Page_Load(object sender, EventArgs e)
{
List<NovoAluno> lista = new List<NovoAluno>();
lista.Add(new NovoAluno()
{
Ibm = "120299",
Nome = "JULINA MARTINS",
Componente = "Artes",
Mb1 = "0",
Rv1 = "0"
});
lista.Add(new NovoAluno()
{
Ibm = "120299",
Nome = "JULINA MARTINS",
Componente = "História",
Mb1 = "9.8",
Rv1 = "0"
});
lista.Add(new NovoAluno()
{
Ibm = "120295",
Nome = "RITA",
Componente = "Geografia",
Mb1 = "9.8",
Rv1 = "7"
});
lista.Add(new NovoAluno()
{
Ibm = "120295",
Nome = "CLAUDIA",
Componente = "Geografia",
Mb1 = "9.8",
Rv1 = "7"
});
Repeater1.DataSource = lista;
Repeater1.DataBind();
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ChamadoAluno.aspx.cs" Inherits="ChamadoAluno" %>
<!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>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table border="0" cellpadding="2" cellspacing="0" width="100%" style="font: verdana">
</HeaderTemplate>
<ItemTemplate>
<tr>
<td width="100%">
IBM
<%# Eval("IBM") %>
Nome
<%# Eval("Nome") %>
Componente
<%# Eval("Componente")%>
Mb1
<%# Eval("Mb1")%>
Rv1
<%# Eval("Rv1")%>
</b>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>
protected void Page_Load(object sender, EventArgs e)
{
List<NovoAluno> lista = new List<NovoAluno>();
lista.Add(new NovoAluno()
{
Ibm = "120299",
Nome = "JULINA MARTINS",
Componente = "Artes",
Mb1 = "0",
Rv1 = "0"
});
lista.Add(new NovoAluno()
{
Ibm = "120299",
Nome = "JULINA MARTINS",
Componente = "História",
Mb1 = "9.8",
Rv1 = "0"
});
lista.Add(new NovoAluno()
{
Ibm = "120295",
Nome = "RITA",
Componente = "Geografia",
Mb1 = "9.8",
Rv1 = "7"
});
lista.Add(new NovoAluno()
{
Ibm = "120295",
Nome = "CLAUDIA",
Componente = "Geografia",
Mb1 = "9.8",
Rv1 = "7"
});
Repeater1.DataSource = lista;
Repeater1.DataBind();
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ChamadoAluno.aspx.cs" Inherits="ChamadoAluno" %>
<!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>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table border="0" cellpadding="2" cellspacing="0" width="100%" style="font: verdana">
</HeaderTemplate>
<ItemTemplate>
<tr>
<td width="100%">
IBM
<%# Eval("IBM") %>
Nome
<%# Eval("Nome") %>
Componente
<%# Eval("Componente")%>
Mb1
<%# Eval("Mb1")%>
Rv1
<%# Eval("Rv1")%>
</b>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>
GOSTEI 0
Indemberge Santos
09/09/2009
Fábio;
Estava pensando exatamente numa lógica parecida com a sua: pegar os dados do DataSet jogar num Array e depois passar pro objeto que está ná página aspx.
Vou continuar nesta lógica e assim que concluir te dou um retorno.
Obrigado!
Indemberge
GOSTEI 0
Indemberge Santos
09/09/2009
Fábio;
Podemos fechar o chamado.
Consegui resolver o problema criando meu DataTable da forma que precisava para exibir os dados.
Obrigado.
Indemberge
GOSTEI 0