Enlazar datos a series (Controles Chart)
En este tema se describen las distintas técnicas de enlace de datos. Para obtener un tutorial sobre cómo enlazar datos a series, vea Tutorial: Enlazar datos entre un gráfico y una base de datos.
Métodos de enlace de datos
Método |
Ventajas |
Desventajas |
---|---|---|
Chart.DataBindTable |
|
|
Chart.DataSource y Chart.DataBind |
|
|
Points.DataBind(X)Y |
|
|
Points.DataBind |
Igual al anterior y:
|
|
Chart.DataBindCrossTable |
|
|
Orígenes de datos
A continuación se citan los posibles orígenes de datos usados para enlazar:
DataView.
Lectores de datos (SQL, OleDB).
DataSet (SOLO enlace de datos DataSource).
Matrices.
Listas.
Todos los objetos IEnumerable.
Nota
Cuando use orígenes de datos no tabulares como listas o matrices, solo puede enlazar los valores Y, independientemente del tipo de método de enlace de datos usado. Esto se debe a que no se pueden especificar columnas para valores X ni otras propiedades de gráfico, como Tooltip.
Ejemplo
En el siguiente código se muestra cómo enlazar un gráfico de columnas a una tabla de base de datos de Access. La tabla "SALESCOUNTS" tiene una columna "SalesRep" con los nombres de los vendedores, una columna "Prod A", una columna "Prod B", una columna "Prod C", una columna "Prod D", una columna "Prod E" y una columna "Other". El método DataBindTable crea automáticamente seis objetos Series: uno para cada columna de producto y uno para la columna "Other". Existe de forma automática un punto de datos en cada serie por registro. El método también enlaza los valores X de las seis series a la columna "SalesRep" y la usa para las seis etiquetas de eje de los puntos de datos.
Imports System.Data.OleDb
Imports System.Data
Imports System.Web.UI.DataVisualization.Charting
...
' Resolve the address to the Access database. We assume database is
' in Bin folder.
Dim fileNameString As String = "chartdata.mdb"
' Initialize a connection string.
Dim myConnectionString As String = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileNameString
' Define the database query.
Dim mySelectQuery As String = "SELECT * FROM SALESCOUNTS;"
' Create a database connection object using the connection string.
Dim myConnection As OleDbConnection = New OleDbConnection(myConnectionString)
' Create a database command on the connection using query.
Dim myCommand As OleDbCommand = New OleDbCommand(mySelectQuery,myConnection)
' Open the connection.
myCommand.Connection.Open()
' Create a database reader.
Dim myReader As OleDbDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
' Specify the Name column to be used for point's X values.
chart1.DataBindTable(myReader,"SalesRep")
' Close the connection.
myConnection.Close()
' This is a loop to set all created charts appearance with custom attribute.
Dim series As Series
For Each series In chart1.Series
series.CustomAttributes = "DrawingStyle=LightToDark"
Next
using System.Data.OleDb;
using System.Data;
using System.Web.UI.DataVisualization.Charting;
...
// Resolve the address to the Access database. We assume database is
// in Bin folder.
string fileNameString = "chartdata.mdb";
// Initialize a connection string.
string myConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileNameString;
// Define the database query.
string mySelectQuery="SELECT * FROM SALESCOUNTS;";
// Create a database connection object using the connection string.
OleDbConnection myConnection = new OleDbConnection(myConnectionString);
// Create a database command on the connection using query.
OleDbCommand myCommand = new OleDbCommand(mySelectQuery, myConnection);
// Open the connection.
myCommand.Connection.Open();
// Create a database reader.
OleDbDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
// Specify the Name column to be used for point's X values.
chart1.DataBindTable(myReader,"SalesRep");
// Close the connection.
myConnection.Close();
// This is a loop to set all created charts appearance with custom attribute.
foreach (Series series in chart1.Series)
{
series.CustomAttributes = "DrawingStyle=LightToDark";
}
Vea también
Referencia
System.Windows.Forms.DataVisualization.Charting
System.Web.UI.DataVisualization.Charting