2009-07-01 42 views
11

Necesito crear una tabla dinámica en .net. No se puede usar ningún control de terceros (a menos que sea gratis). Traté de encontrar documentación que explica cómo crear tabla dinámica (algoritmo o pasos) en general, pero casi todo está relacionado con Excel. ¿Alguien sabe cómo crear tabla dinámica en C# ??? GraciasPivot Table en C#

+0

¿Está tratando de crear una tabla dinámica de Excel o está tratando de mostrar algún tipo de datos pivotados en un GridView? – Jimmy

+0

Estoy tratando de mostrar datos en un GridView. – Sheraz

+0

¿Cuál es la fuente de datos? Si tiene alguna forma de SQL, le sugiero que haga esto en SQL. ¿Alguna posibilidad de que puedas usar LINQ? –

Respuesta

2

MS-Access tiene el comando TRANSFORM (que hace un pivote), por lo que podría usar ADO.NET para consultar un archivo ms-access mdb, luego usar las consultas de paso para llegar a la fuente de datos que puede ' t pivote (generalmente MS-SQL/T-SQL). Hice una prueba de concepto de esto y funcionó y fue aproximadamente 5000 LOC más corto que la implementación de VBScript que hizo el pivote usando matrices.

Las observaciones despectivas habituales sobre MS-Access no se aplican aquí porque en realidad no está almacenando datos en MS-Access.

+0

cualquier posibilidad de publicar un ejemplo aquí – Sheraz

+0

Comando de transformación: http://msdn.microsoft.com/en-us/library/bb208956.aspx Uso de MS-Access a través de .NET http://www.csharphelp.com/archives/ archive70.html Y el resto involucra tablas de enlaces a sus vistas favoritas o haciendo una consulta de paso/proceso almacenado para obtener datos fuente: http://www.aspfree.com/c/a/Microsoft-Access/On-Using-Passthrough-Queries-in -MS-Access / – MatthewMartin

6

Ayudar aquí http://msdn.microsoft.com/en-us/library/aa172756%28SQL.80%29.aspx

real de la tabla:

Year Quarter Amount  
1990  1  1.1 
1990  2  1.2 
1990  3  1.3 
1990  4  1.4 
1991  1  2.1 
1991  2  2.2 
1991  3  2.3 
1991  4  2.4 
1992  4  2.4 

salida deseada: (Aquí Q para el trimestre)

Year  Q-1  Q-2  Q-3  Q-4  
1990  1.1  1.2  1.3  1.4 
1991  2.1  2.2  2.3  2.4 
1992  0.0  0.0  0.0  2.4 

Consulta:

Use Northwind  
GO 

CREATE TABLE Pivot  
(Year  SMALLINT,  
    Quarter TINYINT,  
    Amount DECIMAL(2,1))  
GO 

INSERT INTO Pivot VALUES (1990, 1, 1.1)  
INSERT INTO Pivot VALUES (1990, 2, 1.2)  
INSERT INTO Pivot VALUES (1990, 3, 1.3)  
INSERT INTO Pivot VALUES (1990, 4, 1.4)  
INSERT INTO Pivot VALUES (1991, 1, 2.1)  
INSERT INTO Pivot VALUES (1991, 2, 2.2)  
INSERT INTO Pivot VALUES (1991, 3, 2.3)  
INSERT INTO Pivot VALUES (1991, 4, 2.4)  
INSERT INTO Pivot VALUES (1992, 4, 2.4) 
GO 

SELECT * FROM Pivot  
GO 

SELECT Year,  
    SUM(CASE Quarter WHEN 1 THEN Amount ELSE 0 END) AS Q1,  
    SUM(CASE Quarter WHEN 2 THEN Amount ELSE 0 END) AS Q2,  
    SUM(CASE Quarter WHEN 3 THEN Amount ELSE 0 END) AS Q3,  
    SUM(CASE Quarter WHEN 4 THEN Amount ELSE 0 END) AS Q4  
FROM Northwind.dbo.Pivot  
GROUP BY Year  
GO 

Otra Salida:

SELECT P1.*, (P1.Q1 + P1.Q2 + P1.Q3 + P1.Q4) AS YearTotal  
FROM (SELECT Year, 
      SUM(CASE P.Quarter WHEN 1 THEN P.Amount ELSE 0 END) AS Q1, 
      SUM(CASE P.Quarter WHEN 2 THEN P.Amount ELSE 0 END) AS Q2, 
      SUM(CASE P.Quarter WHEN 3 THEN P.Amount ELSE 0 END) AS Q3, 
      SUM(CASE P.Quarter WHEN 4 THEN P.Amount ELSE 0 END) AS Q4 
    FROM Pivot AS P 
    GROUP BY P.Year) AS P1 
GO 
0

CellSetGrid es un control de código abierto ASP .Net (C#), que ofrece tabla dinámica como la funcionalidad.

Esto solía estar disponible para su descarga en este sitio: http://www.SQLServerAnalysisServices.com

Ahora el sitio no aloja este control más. Así que he cargado la fuente del control - CellSetGrid here.

  1. Usted puede construir la fuente
  2. Añadir esto como un control en el cuadro de herramientas Visual Studio.
  3. Arrastrar y control de la caída de un formulario web
  4. establecer la cadena de conexión con el cubo
  5. Esto mostrará todas las dimensiones y grupos de medida para que pueda arrastrar y soltar lo que quiere conseguir una tabla dinámica como la funcionalidad