Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

LiPe

Crosstab - ASP.NET C#

Recommended Posts

Olá!

Preciso fazer um grid em forma de matriz (cross tab) que exibirá as informações da seguinte maneira:

 

Data 05/02 06/02 07/02 08/02 ......

Loja A x y z a

Loja B R$0,00 R$0,00 R$0,00 R$0,00

Loja C R$0,00 R$0,00 R$0,00 R$0,00

 

eu ja montei a query, mas nao sei como jogar isso no grid view...obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sua query mostra o resultado da maneira que você quer mostrar na grid?

Ou seja, sua query te da o resultado:

 

Data 05/02 06/02 07/02 08/02 ......

Loja A x y z a

Loja B R$0,00 R$0,00 R$0,00 R$0,00

Loja C R$0,00 R$0,00 R$0,00 R$0,00

 

Se sim, é só você executar a consulta e jogar o resultado em uma grid ela vai se ajeitar sozinha.

Mas para isso você precisa usar AutoGenerateColumns = true na grid destino.

 

 

Tópico movido de Plataforma.Net para Web Applications.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao cara, pra ficar mais rapido, é melhor gerar a query da seguinte maneira

 

loja, dia, valor

 

ou seja um array

 

arrDados(0,0) = "valor"

arrDados(data, loja) = "valor"

 

teriamos que ter uma linha e coluna só com os titular, exemplo

 

arrDados(loja,0) = ""

arrDados(0,data) = ""

 

isso é possivel certo?

 

daria pra fazer algo assim...

 

for i = lbound(arrDados(data,0)) to ubound(arrDados(data,0))

for n = lbound(arrDados(0,loja)) to ubound(arrDados(0,loja))

grid.value = arrDados(data,loja)

next

next

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que você falou ASP.NET C#, dai postou código VB6, ai ficamos confuso, achamos que tinha se enganado.

 

Neste caso, acho que seria melhor você criar um DataSet, e depois jogar o DataSet na grid.

No DS, cada coluna seria um dia do mês, aqui da para fazer um indo de 1 até XX(conforme cada mes)

Após preencher as colunas, você faz o seu select, e para cada loja adicionar uma linha no dataset. Os valores das colunas seria referente ao dia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

teria como você exemplificar?

eu procurei sobre pivot table no google, e encontrei uma função pronta que retonar um datatable a partir de um select, ja montado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Chuto algo assim:

 

DataTable dt = new DataTable();
for (int i = 0; i < 31; i++)
	dt.Columns.Add(new DataColumn(i.ToString() + "/03")); // Dia/Mes

foreach (string loja in arrLojas)
{
	DataRow dr = dt.NewRow();
	for (int i = 0; i < 31; i++)
		dr[i.ToString() + "/03"] = "Valor do banco";
	dt.Rows.Add(dr);
}

meuGrid.DataSource = dt;
meuGrid.DataBind();

Lembrando que usei mes fixo.

arrLojas são todas as suas lojas.

"Valor do banco", aqui você decide, se vai fazer um select neste momento, ou se vai fazer um select antes de tudo e armazenar em algum lugar e depois jogar aqui

 

Acho que é isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.